繁体   English   中英

blueimp jquery文件上传 - “完成”,“完成”回调不适用于IE 9

[英]blueimp jquery file upload - “done”, “complete” callbacks not working for IE 9

我正在使用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;
            };

[为了便于阅读而修剪的插件代码]

据我所知,在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的状态。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM