 
			
				06.04.2015, 19:04
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Аспирант 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 05.05.2011 
					
					
					
						Сообщений: 48
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
			
			 
				Метод delete для formData
			 
			
		
		
		
		Есть один общий список <select>, из которого выбираются страны. При каждом выборе страна сохраняется в объекте selectedCountry  
// создаем объект 
var selectedCountry = {};
// наполняем объект значениями: 
selectedCountry = {0 : 'Москва'}
selectedCountry = {1 : 'RU'    }
Для передачи на сервер использую formdata 
 
var formdata = new FormData();
formdata.append('dest[0]', 'Москва'); 	// пара: 'dest[0]':'Москва'
formdata.append('dest[1]', 'RU'); 		// пара: 'dest[1]':'RU'
Бывает, что перед отправкой, надо удалить из formdata значение,  например,  пару 'dest[1]':'RU'.  
Нашел вроде здесь -  https://developer.mozilla.org/en-US/...ormData/delete , что можно удалить используя метод метод delete(), который удаляет из formdata пару key/value, но в IE11 он не сработал. 
Поэтому пока решил эту проблему, используя мой объект selectedCountry.
 
// удаляем элемент из объекта selectedCountry
delete selectedCountry[1];   								
var formdata = new FormData(); // повторно создаю formdata 
// перебираем свойства объекта selectedCountry и вставляем в formdata
for (var key in selectedCountry) {							
 formdata.append('dest['+key+']', selectedCountry[key]);
}
Хотелось бы узнать: 
1. Можно ли без этих изощрений, напрямую  удалять поля из formdata? 
2. Есть ли утечка памяти? 
Перед вставкой, чтобы объект formdata стал пустым, попросту повторно его создаю, т.е.  var formdata = new FormData();  
Такой повтор, тоже не радует, так как есть подозрение, что повторные объявления formdata не удаляют предыдущие объекты из памяти  
		
	
		
		
		
		
		
		
		
						  
				
				Последний раз редактировалось bartonom, 06.04.2015 в 19:38.
				
				
			
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				06.04.2015, 19:07
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 14.01.2015 
					
					
					
						Сообщений: 12,989
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 >Бывает, что перед отправкой, надо удалить из formdata значение 
 
А зачем удалять, если можно просто не добавлять? 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				06.04.2015, 19:30
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Аспирант 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 05.05.2011 
					
					
					
						Сообщений: 48
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	
		
			Сообщение от laimas
			 
		
	 | 
 
	
		>Бывает, что перед отправкой, надо удалить из formdata значение 
 
А зачем удалять, если можно просто не добавлять?
	 | 
 
	
 
 Дело в том, что это на усмотрение пользователя. Он может как добавить, так и удалить.  
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				06.04.2015, 19:34
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 14.01.2015 
					
					
					
						Сообщений: 12,989
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 >Для передачи на сервер использую formdata 
 
Для передачи! При чем тут выбор клиента, он что в formdata должен ковыряться? Ну наверное выбор его обуславливается полями формы, может чем-то иным, но в любом случае это условие. А разве нельзя проверить это условие перед отправкой формы и добавить в formdata, если выбрано? 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				06.04.2015, 19:36
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 27.05.2010 
					
					
					
						Сообщений: 33,150
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	| 
		
			Сообщение от bartonom
			
		
	 | 
 
	| 
		наполняем объект знаечниями:
	 | 
 
	
 
   
selectedCountry = {0 : 'Москва'}
 
selectedCountry[0]= 'Москва'  
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				06.04.2015, 20:05
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Аспирант 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 05.05.2011 
					
					
					
						Сообщений: 48
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	
		
			Сообщение от laimas
			 
		
	 | 
 
	
		>Для передачи на сервер использую formdata 
 
Для передачи! При чем тут выбор клиента, он что в formdata должен ковыряться? Ну наверное выбор его обуславливается полями формы, может чем-то иным, но в любом случае это условие. А разве нельзя проверить это условие перед отправкой формы и добавить в formdata, если выбрано?
	 | 
 
	
 
 В <select class='сountry'> пользователь выбрал какую-либо страну  
В обработчике $('.сountry').change(function() {... 	
 
selectedCountry[1]='RU'; // сохраняем в selectedCountry
 
Выбрал еще страну
 
selectedCountry[2]='HU'; // сохраняем в selectedCountry и т.д.
 
Затем кликнул условно по кнопке 'Удалить', удалил страну с 'RU'.  
Удаляем из selectedCountry соответственно 
 
delete selectedShipCountry[2];
 
Пользователь нажал кнопку 'Отправить'. Отправляю на сервер formdata, сформированный следующим образом:
 
var formdata = new FormData(); // повторно создаю formdata 
// перебираем свойства объекта selectedCountry и вставляем в formdata
for (var key in selectedCountry) {							
 formdata.append('dest['+key+']', selectedCountry[key]);
}
 
		
	
		
		
		
		
		
		
	
		
			
			
	
			
			
			
			
			
				 
			
			
			
			
			
			
				
			
			
			
		 
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				06.04.2015, 20:17
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 14.01.2015 
					
					
					
						Сообщений: 12,989
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 Пользователь выбрал в списке Тобаго, затем Маврикия. Нажал "Удалить" - значит нужно снимать выбор опшена в соответствующем списке, и делается этого во время диалога "выбор в форме", а не во время ее отправки, и надобности ковыряться в FormData необходимости нет, как и создавать промежуточный объект selectedCountry . 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				06.04.2015, 20:28
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Аспирант 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 05.05.2011 
					
					
					
						Сообщений: 48
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	
		
			Сообщение от laimas
			 
		
	 | 
 
	| 
		Пользователь выбрал в списке Тобаго, затем Маврикия. Нажал "Удалить" - значит нужно снимать выбор опшена в соответствующем списке, и делается этого во время диалога "выбор в форме", а не во время ее отправки, и надобности ковыряться в FormData необходимости нет, как и создавать промежуточный объект selectedCountry .
	 | 
 
	
 
 Laimas Uimis 
Не можешь ответить по сути двух вопросов, заканчивай нравоучения  
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				06.04.2015, 20:39
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 14.01.2015 
					
					
					
						Сообщений: 12,989
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 Ну так вы бы показали html структуру кода вашего. К примеру, если именование ваших списков, это уникальные значения, тогда не сложно хранить выбор пользователя (для визуализации) в списке даже на UL LI с флажками для удаления. А выбранные флажки укажут на текст, по которому можно найти в списках опшен, сняв его выбор. Если уникальны ID значений, можно и по значению искать. 
 
Отправка же, это добавление в FormData только тех значений формы, которые выбраны - получили ее элементы и циклом добавили в FormData. 
 
Как это вы делаете, это вопрос, и что можно сказать? Я знаю одно, что не может пользователь ковыряться в объектах, он может делать это только на визуальных элементах, откуда и следует вывод, что необходимости в том, что вы описываете, нет. 
 
Покажите html-код, и уверен, что вам смогут предложить решение и не одно. 
 
PS. Думаю, вы встречались со списками стилизованными под набор с флажками, с помощью таких вообще не проблематично делать выбор/отмену, даже нет необходимости в подмене select, вы ведь используете FormData. 
		
	
		
		
		
		
		
		
		
						  
				
				Последний раз редактировалось laimas, 06.04.2015 в 21:05.
				
				
			
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
 
 
 
 
 
	 | 
 
 
 |