tan*_*ree 14 javascript jquery file-upload asyncfileupload blueimp
我正在使用Blueimp Jquery文件上传插件异步上传文件.它适用于大多数其他浏览器(有一些小问题) - 在IE上,我看到这个问题,"完成","停止","始终","完成"和其他一些事件回调没有被调用.
在调试时,我在"完成","失败","始终"中添加了console.logs,并在_onSend函数中添加了一个"完整"方法(在jquery.fileupload.js中) - 但是没有一个似乎在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;
};
Run Code Online (Sandbox Code Playgroud)
[为了便于阅读而修剪的插件代码]
据我所知,在IE 9中,jquery.iframe-transport.js用于文件上传(因为IE中不支持XHR文件上传).
我不确定如何修复/调试此问题.
谢谢!
tan*_*ree 19
如果在从服务器返回json时将响应的内容类型设置为"text/html"或"text/plain"(而不是application/json),则会触发done事件.这仅适用于不支持XHR文件上载的浏览器(例如IE9)以及blueimp插件使用IFrame传输的情况.
插件文档中"内容协商"下的相关信息:https: //github.com/blueimp/jQuery-File-Upload/wiki/Setup