blueimp jquery 文件上传 - “完成”、“完成”回调不适用于 IE 9
blueimp jquery file upload - "done", "complete" callbacks not working for IE 9
我正在使用Blueimp Jquery文件上传插件来异步上传文件。它在大多数其他浏览器中运行良好(有一些小问题) - 在 IE 上,我看到这个问题,"完成"、"停止"、"总是"、"完成"和其他一些事件回调没有被调用。
在调试时,我在"done","fail","always"中添加了console.logs,并在_onSend函数(在jquery.fileupload.js)中向ajax请求添加了"complete"方法 - 但它们似乎都没有在IE中被调用。
_onSend: function (e, data) {
var that = this,
jqXHR,
slot,
pipe,
options = that._getAJAXSettings(data),
send = function (resolve, args) {
that._sending += 1;
jqXHR = jqXHR || (
(resolve !== false &&
that._trigger('send', e, options) !== false &&
(that._chunkedUpload(options) || $.ajax(options))) ||
that._getXHRPromise(false, options.context, args)
).complete(function (result, textStatus, jqXHR) {
console.log("complete");
}).done(function (result, textStatus, jqXHR) {
console.log("done", result);
}).fail(function (jqXHR, textStatus, errorThrown) {
console.log("fail", result);
}).always(function (a1, a2, a3) {
console.log("done", result);
}
});
return jqXHR;
};
[为提高可读性而修剪的插件代码]
我知道在IE 9中,jquery.iframe-transport.js用于文件上传(因为IE不支持XHR文件上传)。
我不确定我应该如何修复/调试这个问题。
谢谢!
服务器返回 json 时,如果响应的内容类型设置为"text/html"或"text/plain"(而不是application/json),则会触发 done 事件。这仅适用于不支持 XHR 文件上传的浏览器(例如 IE9),并且 blueimp 插件使用 IFrame 传输。
插件文档中"内容协商"下的相关信息:https://github.com/blueimp/jQuery-File-Upload/wiki/Setup
作为记录,我在直接上传到 S3 时遇到了这个问题,因为他们的 CORS 功能允许这样做。
解决方案是将success_action_status设置为"200",然后正确触发 Done 事件。
如果有人在直接上传到 S3 时仍然遇到此问题,解决方案是添加一个值为"201"的success_action_status字段。请确保将其也作为策略数据的一部分包含在内,因为它们必须匹配。
显然,当收到来自IE9 S3的上传时,将返回一个空字符串。要让它返回文件上传者需要的XML,你必须告诉它返回状态201。
- 谷歌将部分页面加载后自动完成不起作用 ASP.Net MVC
- CSS 类在特定场景中不适用
- 使jQuery自动完成功能适用于多个单词(“跳过”一个单词)
- Ui自动完成不显示列表
- Codeigniter自动完成不起作用
- Jquery自动完成不是't工作.我做错了什么
- ng类不适用
- Internet Explorer CSS类样式没有'如果存在具有相同类名的其他元素,则不适用
- 自动完成不会'不起作用
- Netbeans 8.0.2 extjs 项目自动完成不起作用
- Jquery 谷歌自动完成不起作用 - 没有错误
- Jquery 自动完成不会在动态加载的部分视图中触发
- 指令“链接”不适用,如我所愿
- 最小和最大轴值在具有对数轴的高图表中不适用
- Jquery 自动完成不起作用
- 角度范围项目在项目更改后不适用
- ASP MVC 5 自动完成不起作用
- 页面加载顺序有问题 - 样式不适用
- CSS3 透视在动画完成之前不适用
- 自动完成不会't适用于具有相同id的两个元素