Показать сообщение отдельно
  #1 (permalink)  
Старый 06.04.2015, 19:04
Аспирант
Отправить личное сообщение для bartonom Посмотреть профиль Найти все сообщения от bartonom
 
Регистрация: 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.
Ответить с цитированием