• 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中就支持文件的上传了
    时不我待,不负韶华!立刻行动!不吃学习的苦就会吃生活的苦!
  • 相关阅读:
    【Cocos2dx 3.3 Lua】触屏事件
    (转载)【cocos2dx 3.x Lua] 注册事件函数详解
    【Cocos2dx 3.x Lua】CCParallaxNode使用
    TileMap地图
    linux rdate
    sqlmap 技巧整理
    linux ckconfig
    ubuntu remove mysql
    aliyun ubuntu mysql
    解决mysql“Access denied for user 'root'@'localhost'”
  • 原文地址:https://www.cnblogs.com/zrp2013/p/3106435.html
Copyright © 2020-2023  润新知