Как я исправил: Не могу загрузить изображения с помощью formData (совместимость браузера) - PullRequest
0 голосов
/ 01 июня 2018

Невозможно использовать FormData на iOS, но во всех браузерах Desktop, включая Safari, работать.

$("#form").on('submit', function(e){

  let formData = new FormData(this);
  
  sendwithAjax(formData);
});

1 Ответ

0 голосов
/ 01 июня 2018

У меня была пара проблем с FormData из-за этого:

$("#form").on('submit', function(e){

  let formData = new FormData(this);
  
  sendwithAjax(formData);
});

Большинство браузеров поддерживают это.Переменная this или e.currentTarget соответствует форме, содержащей все входные данные.Таким образом, мы просто делаем formData формы.

Ну, когда дело дошло до мобильных устройств, iOS, чтобы быть более конкретным, пошла не очень хорошо.XHR-запросы только что упали.

Вот как я это исправил:

var formData = new FormData();

for (var i = 0; i < form.length; i++) {
	var element = form[i];

	if(element.type === "file" && element.files.length > 0){
		formData.append(element.name, element.files[0], element.files[0].name);
	} else if(element.type === "checkbox" && element.checked){
		formData.append(element.name, element.value);
	} else if(element.type !== "checkbox"){
		formData.append(element.name, element.value);
	}
  
}

sendWithAjax(formData)

Проблема заключалась в «форме» внутри экземпляра FormData, поэтому я поместил каждый элемент формы вручную, и это сработало.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...