Javascript Internet Explorer(IE9)中的jQuery文件上载未触发完成回调
我检查了一些关于同一问题的问题,但即使将我的内容类型设置为“text/html”作为响应,“done”回调也不会被触发。另外,正如jQuery文件上传所说,上传完成后,我需要重定向以获取上传的文件(),但这还没有完成。 任何帮助都将不胜感激。Javascript Internet Explorer(IE9)中的jQuery文件上载未触发完成回调,javascript,jquery,internet-explorer,jquery-file-upload,Javascript,Jquery,Internet Explorer,Jquery File Upload,我检查了一些关于同一问题的问题,但即使将我的内容类型设置为“text/html”作为响应,“done”回调也不会被触发。另外,正如jQuery文件上传所说,上传完成后,我需要重定向以获取上传的文件(),但这还没有完成。 任何帮助都将不胜感激。 问候。好的,我开始工作了。问题是我在文件上传器配置中 dataType: 'json' 但是由于IE9使用iframe,它发出一个html请求,并且响应的内容类型为“text/html”。通过这种配置,fileuploader期望收到一个json响应,因
问候。好的,我开始工作了。问题是我在文件上传器配置中
dataType: 'json'
但是由于IE9使用iframe,它发出一个html请求,并且响应的内容类型为“text/html”。通过这种配置,fileuploader期望收到一个json响应,因此我的响应将是一个失败的回调,我只是为了测试而做的。通过查看这篇文章,它开始工作了。投票最多的答案不是最好的解决方案,而且可能会出错。事实上,IE<10不建议设置
数据类型,这篇(非常棒的)文章:
当dataType选项设置为text、json、html或script时
iframe传输执行响应的一些处理。因为它
正在对从其使用的iframe获取的DOM对象进行操作,
然而,并不是原始的HTTP响应数据,而是潜在的
突然出现一些惊喜
真正的解决方案:
IE<10中不触发的“事情”与数据类型
无关,只是缺少回调添加
,这迫使文件推入fileupload事件
$('#file_file').fileupload({
add: function (e, data) {
data.submit(); //this will 'force' the submit in IE < 10
},
done: function (e, data) {
alert('Done');
}
});
$('#file_file')。文件上载({
添加:功能(e、数据){
data.submit();//这将在IE<10中“强制”提交
},
完成:功能(e,数据){
警报(“完成”);
}
});
对我来说,这是正确的答案,因为在现代浏览器中,将数据类型设置为json会触发上传到Amazon S3时的失败回调(虽然修复了旧浏览器,IE9),将其完全删除在大多数浏览器中都有效。此修复可能会引发一些错误,请参阅我的解决方案,了解实际解决方案,无副作用