Javascript Internet Explorer(IE9)中的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响应,因

我检查了一些关于同一问题的问题,但即使将我的内容类型设置为“text/html”作为响应,“done”回调也不会被触发。另外,正如jQuery文件上传所说,上传完成后,我需要重定向以获取上传的文件(),但这还没有完成。 任何帮助都将不胜感激。
问候。

好的,我开始工作了。问题是我在文件上传器配置中

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),将其完全删除在大多数浏览器中都有效。此修复可能会引发一些错误,请参阅我的解决方案,了解实际解决方案,无副作用