ajax无刷新上传

使用ajaxFileUpload.js插件实现ajax无刷新上传文件

demo:参见localhost下的ajaxiframe目录

错误处理:

(1)无刷新上传文件报错(jQuery.handleError is not a function)

a.handlerError只在jquery-1.4.2之前的版本中存在,jquery-1.6 和1.7中都没有这个函数了。

b.如果返回的dataType: "json", 是json格式的,则还需要添加httpData方法。

因此在jquery高级版本中将这个函数添加上 ,问题解决。

ajaxFileUpload.js在 jQuery.extend添加以下代码:

            jQuery.extend({
                handleError: function (s, xhr, status, e) {
                    if (s.error) {
                        s.error.call(s.context || s, xhr, status, e);
                    }
                    if (s.global) {
                        (s.context ? jQuery(s.context) : jQuery.event).trigger("ajaxError", [xhr, s, e]);
                    }
                },
                httpData: function (xhr, type, s) {
                    var ct = xhr.getResponseHeader("content-type"),
            xml = type == "xml" || !type && ct && ct.indexOf("xml") >= 0,
            data = xml ? xhr.responseXML : xhr.responseText;
                    if (xml && data.documentElement.tagName == "parsererror")
                        throw "parsererror";
                    if (s && s.dataFilter)
                        data = s.dataFilter(data, type);
                    if (typeof data === "string") {
                        if (type == "script")
                            jQuery.globalEval(data);
                        if (type == "json")
                            data = window["eval"]("(" + data + ")");
                    }
                    return data;
                }
            });

(2) SyntaxError: syntax error in ajaxFileUpload jquery plugin

这个是返回格式的问题,如果dataType: "json",ajax处理那端也要是json格式

jquery ajaxFileUpload.js 插件在IE9中的bug修复

在ajaxfileupload.js中找到如下代码:

 

[javascript] 
 if(window.ActiveXObject) { 
                var io = document.createElement('<iframe id="' + frameId + '" name="' + frameId + '" />'); 
                if(typeof uri== 'boolean'){ 
                    io.src = 'javascript:false'; 
                } 
                else if(typeof uri== 'string'){ 
                    io.src = uri; 
                } 
} 

将上面的代码修改为:

[javascript]
if(window.ActiveXObject) { 
                if(jQuery.browser.version=="9.0") { 
                    io = document.createElement('iframe'); 
                    io.id = frameId; 
                    io.name = frameId; 
                } else if(jQuery.browser.version=="6.0"||jQuery.browser.version=="7.0"||jQuery.browser.version=="8.0") { 
                    var io = document.createElement('<iframe id="' + frameId + '" name="' + frameId + '" />'); 
                    if(typeof uri== 'boolean'){ 
                        io.src = 'javascript:false'; 
                    } 
                    else if(typeof uri== 'string'){ 
                        io.src = uri; 
                    } 
                } 
} 

 这样,ajaxFileUpload在IE9中就支持文件的上传了

 

转载于:https://www.cnblogs.com/zrp2013/archive/2013/05/29/3106435.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值