我如何修复:无法使用formData上传图像(浏览器兼容性)

时间:2018-06-01 17:09:24

标签: javascript html dom cross-browser

不能在iOS上使用FormData,但在包括Safari工作在内的所有桌面浏览器中都使用。

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

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

1 个答案:

答案 0 :(得分:0)

由于这个原因,我在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实例中的'form',所以我手动放置了表单的每个元素并且它有效。