acb*_*980 2 safari ajax jquery file-upload
我正在使用jQuery和$ .ajax() - 函数来提交我的表单字段.请求如下所示:
$.ajax({
url: url,
type: method,
data: formData,
contentType: false,
processData: false,
success: function(data) {
// do some stuff with data
},
timeout: 30000,
error: function(jqxhr,status,error) {
console.log(jqxhr);
}
});
Run Code Online (Sandbox Code Playgroud)
url,方法等变量直接取自表单属性.变量formData是一个FormData-Object,它包含要发送到服务器的所有数据.
这些都适用于多年以来在所有浏览器中.但是自OS X和iOS上次更新以来,当表单中有type = file的输入时,Safari无法处理此请求.问题是,我没有得到任何错误消息,所以它失败了错误回调,但其中的jqxhr变量没有消息(statusText:"error",responseText:"").
您是否知道如何更接近错误消息以便我可以解决此问题?我已经在Mac OS X上测试了所有其他浏览器,它运行得很好(这也是Safari多年来做的).
问题(也在评论中发布)是空文件输入.最简单的解决方案是检查它们并从formData对象中删除它们.我现在用以下代码解决了它,它与aletzo的链接略有不同,但是做的相同:
$('input[type=file]',form).each(function() {
var files = $(this).prop('files');
if ( files != undefined && files.length <= 0 ) {
formData.delete($(this).attr('name'));
}
});
Run Code Online (Sandbox Code Playgroud)
感谢大家的帮助.
归档时间: |
|
查看次数: |
1906 次 |
最近记录: |