我如何解决:无法使用 formData 上传图像(浏览器兼容性)
How I fixed: Can't upload images using formData (Browser Compatibilty)
无法在 iOS 上使用 FormData,但在包括 Safari 在内的所有桌面浏览器中都可以使用。
$("#form").on('submit', function(e){
let formData = new FormData(this);
sendwithAjax(formData);
});
由于这个原因,我在使用 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',所以我手动放置了表单的每个元素并且它起作用了。
无法在 iOS 上使用 FormData,但在包括 Safari 在内的所有桌面浏览器中都可以使用。
$("#form").on('submit', function(e){
let formData = new FormData(this);
sendwithAjax(formData);
});
由于这个原因,我在使用 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',所以我手动放置了表单的每个元素并且它起作用了。