从网上下了个ajaxfileupload的文件,结果不支持ie,又出现各种问题,上网查了,修改了可以支持各种浏览器。

把代码贴在下面,以备后用:

jQuery.extend({  
      
  
    createUploadIframe: function(id,uri)  
    {  
            //create frame  
            var frameId = 'jUploadFrame' + id;  
              
            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;  
                // }  
                  
                //fix ie9 and ie 10-------------  
                if(jQuery.browser.version=="9.0" || jQuery.browser.version=="10.0"){  
                    var 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;  
                     }  
                }  
            }  
            else {  
                var io = document.createElement('iframe');  
                io.id = frameId;  
                io.name = frameId;  
            }  
            io.style.position = 'absolute';  
            io.style.top = '-1000px';  
            io.style.left = '-1000px';  
  
            document.body.appendChild(io);  
  
            return io             
    },createUploadForm: function(id,fileElementId,tag_name,tag_link,tag_sort,tag_status,tag_id)  
    {  
        //create form     
        var formId = 'jUploadForm' + id;  
        var fileId = 'jUploadFile' + id;  
        //--  
        var tagNameId = 'tag_name' + id;  
        var tagLinkId = 'tag_link' + id;  
        var tagSortId = 'tag_sort' + id;  
        var tagStatusId = 'tag_status' + id;  
        var tagIdId = 'tag_id' + id;  
        //--end  
        var form = $('<form  action="" method="POST" name="' + formId + '" id="' + formId + '" enctype="multipart/form-data"></form>');   
        var oldElement = $('#' + fileElementId);  
        var newElement = $(oldElement).clone();  
        //--  
        var tagNameElement = '<input type="text" name="tag_name" value="'+tag_name+'">';    
        var tagLinkElement = '<input type="text" name="tag_link" value="'+tag_link+'">';  
        var tagSortElement = '<input type="text" name="tag_sort" value="'+tag_sort+'">';  
        var tagStatusElement = '<input type="text" name="tag_status" value="'+tag_status+'">';  
        var tagIdElement = '<input type="text" name="tag_id" value="'+tag_id+'">';  
        //--end  
        $(oldElement).attr('id',fileId);  
        $(oldElement).before(newElement);  
        $(oldElement).appendTo(form);  
        //--  
        $(tagNameElement).appendTo(form);  
        $(tagLinkElement).appendTo(form);  
        $(tagSortElement).appendTo(form);  
        $(tagStatusElement).appendTo(form);  
        $(tagIdElement).appendTo(form);  
        //--end  
        //set attributes  
        $(form).css('position','absolute');  
        $(form).css('top','-1200px');  
        $(form).css('left','-1200px');  
        $(form).appendTo('body');         
        return form;  
    },ajaxFileUpload: function(s) {  
        // Todo introduce global settings,allowing the client to modify them for all requests,not only timeout          
        s = jQuery.extend({},jQuery.ajaxSettings,s);  
        var id = new Date().getTime()          
        var form = jQuery.createUploadForm(id,s.fileElementId,s.tag_name,s.tag_link,s.tag_sort,s.tag_status,s.tag_id);  
        var io = jQuery.createUploadIframe(id,s.secureuri);  
        var frameId = 'jUploadFrame' + id;  
        var formId = 'jUploadForm' + id;          
        // Watch for a new set of requests  
        if ( s.global && ! jQuery.active++ )  
        {  
            jQuery.event.trigger( "ajaxStart" );  
        }              
        var requestDone = false;  
        // Create the request object  
        var xml = {}     
        if ( s.global )  
            jQuery.event.trigger("ajaxSend",[xml,s]);  
        // Wait for a response to come back  
        var uploadCallback = function(isTimeout)  
        {             
            var io = document.getElementById(frameId);  
            try   
            {                 
                if(io.contentwindow)  
                {  
                     xml.responseText = io.contentwindow.document.body?io.contentwindow.document.body.innerHTML:null;  
                     xml.responseXML = io.contentwindow.document.XMLDocument?io.contentwindow.document.XMLDocument:io.contentwindow.document;  
                       
                }else if(io.contentDocument)  
                {  
                     xml.responseText = io.contentDocument.document.body?io.contentDocument.document.body.innerHTML:null;  
                    xml.responseXML = io.contentDocument.document.XMLDocument?io.contentDocument.document.XMLDocument:io.contentDocument.document;  
                }                         
            }catch(e)  
            {  
                jQuery.handleError(s,xml,null,e);  
            }  
            if ( xml || isTimeout == "timeout")   
            {                 
                requestDone = true;  
                var status;  
                try {  
                    status = isTimeout != "timeout" ? "success" : "error";  
                    // Make sure that the request was successful or notmodified  
                    if ( status != "error" )  
                    {  
                        // process the data (runs the xml through httpData regardless of callback)  
                        var data = jQuery.uploadHttpData( xml,s.dataType );      
                        // If a local callback was specified,fire it and pass it the data  
                        if ( s.success )  
                            s.success( data,status );  
      
                        // Fire the global callback  
                        if( s.global )  
                            jQuery.event.trigger( "ajaxSuccess",s] );  
                    } else  
                        jQuery.handleError(s,status);  
                } catch(e)   
                {  
                    status = "error";  
                    jQuery.handleError(s,status,e);  
                }  
  
                // The request was completed  
                if( s.global )  
                    jQuery.event.trigger( "ajaxComplete",s] );  
  
                // Handle the global AJAX counter  
                if ( s.global && ! --jQuery.active )  
                    jQuery.event.trigger( "ajaxStop" );  
  
                // Process result  
                if ( s.complete )  
                    s.complete(xml,status);  
  
                jQuery(io).unbind()  
  
                setTimeout(function()  
                                    {   try   
                                        {  
                                            $(io).remove();  
                                            $(form).remove();     
                                              
                                        } catch(e)   
                                        {  
                                            jQuery.handleError(s,e);  
                                        }                                     
  
                                    },100)  
  
                xml = null  
  
            }  
        }  
        // Timeout checker  
        if ( s.timeout > 0 )   
        {  
            setTimeout(function(){  
                // Check to see if the request is still happening  
                if( !requestDone ) uploadCallback( "timeout" );  
            },s.timeout);  
        }  
        try   
        {  
           // var io = $('#' + frameId);  
            var form = $('#' + formId);  
            $(form).attr('action',s.url);  
            $(form).attr('method','POST');  
            $(form).attr('target',frameId);  
            if(form.encoding)  
            {  
                form.encoding = 'multipart/form-data';                
            }  
            else  
            {                 
                form.enctype = 'multipart/form-data';  
            }             
            $(form).submit();  
  
        } catch(e)   
        {             
            jQuery.handleError(s,e);  
        }  
        if(window.attachEvent){  
            document.getElementById(frameId).attachEvent('onload',uploadCallback);  
        }  
        else{  
            document.getElementById(frameId).addEventListener('load',uploadCallback,false);  
        }         
        return {abort: function () {}};   
  
    },handleError: function( s,xhr,e ) {
        // If a local callback was specified,fire it
        if ( s.error ) {
            s.error.call( s.context || window,e );
        }

        // Fire the global callback
        if ( s.global ) {
            (s.context ? jQuery(s.context) : jQuery.event).trigger( "ajaxError",[xhr,s,e] );
        }
    },uploadHttpData: function( r,type ) {  
        var data = !type;  
        data = type == "xml" || data ? r.responseXML : r.responseText;  
        // If the type is "script",eval it in global context  
        if ( type == "script" )  
            jQuery.globalEval( data );  
        // Get the JavaScript object,if JSON is used.  
        if ( type == "json" )  {
        	  data = r.responseText;  
        	  var start = data.indexOf(">");  
        	  if(start != -1) {  
        		  var end = data.indexOf("<",start + 1);  
        		  if(end != -1) {  
        			  data = data.substring(start + 1,end);  
        		  }  
        	  } 
            eval( "data = " + data ); 
        }
        // evaluate scripts within html  
        if ( type == "html" )  
            jQuery("<div>").html(data).evalScripts();  
            //alert($('param',data).each(function(){alert($(this).attr('value'));}));  
        return data;  
    }  
})

ajaxFileUpload文件的更多相关文章

  1. HTML5新增form控件和表单属性实例代码详解

    这篇文章主要介绍了HTML5新增form控件和表单属性实例代码详解,需要的朋友可以参考下

  2. HTML5表单验证特性(知识点小结)

    这篇文章主要介绍了HTML5表单验证特性的一些知识点,本文通过实例代码截图的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

  3. amazeui页面分析之登录页面的示例代码

    这篇文章主要介绍了amazeui页面分析之登录页面的示例代码,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

  4. xcode – Cordova plugin.xml添加“Header Search Paths”条目

    我希望将Cordova插件添加到Xcode项目后,在“HeaderSearchPaths”下添加一个新条目.如何在Cordovaplugin.xml文件中进行配置?

  5. ios – 有关多个连接/提要/视图的XML解析的设计/实现建议

    >我应该在每个视图中都有解析器类/对象或解析XML提要吗?

  6. iOS的相当于Android的colors.xml的是什么?

    如果没有,组织整个应用程序使用的颜色的最佳方法是什么?

  7. iOS中的XML转换为JSON

    我需要将XML响应转换为JSON.我的XML响应:我正在使用本网站的XMLReader支持文件:XMLReader我正在使用此代码将XML转换为JSON我收到了JSON响应:我需要这样的回应:我在线转换时得到这个回应.如何获得这样的回应提前致谢.解决方法此代码不会将任何内容转换为JSON.它给你一个NSDictionary.您需要从字典中实际创建JSON数据.尝试这个大小.

  8. ios – Info.plist格式不正确

    解决方法plist文件是严格指定格式的XML文档;XML和PropertyList结构都有非常严格的规则.如果您尝试手动编辑info.plist(即文本),您可以轻松搞砸事情,方法是打开Asas>源代码:您不太可能正确使用此格式.因此,您应该始终使用OpenAs>编辑info.plist.物业清单:这允许属性列表编辑器为您生成XML,并且不太可能在生成的XML结构中出错.当然,我想你仍然可能搞砸某些东西的价值……

  9. ios – 在没有XML的情况下更新sqlite数据库

    我的应用程序需要来自sqlite数据库的数据.它将附带此数据库的一个版本,但我需要定期更新它(很可能每月一次).通常情况下,我一直在通过我设置的一堆网络服务将我的应用程序的其他部分的更新作为XML发送,但我现在正在处理的这个特定数据库非常大(大约20-30MB),而且我当我尝试以这种方式发送时出现超时错误.我尝试将数据库放在我的公司服务器上,然后将其下载到NSData对象中.然后我将该数据对象保存

  10. ios – Swift Eureka Form中的循环

    我正在构建一个Eureka表单,并希望在表单中放置一个循环来构建基于数组的步进器列表.我试图使用的代码是:但是,当我这样做时,我在StepperRow行上出现了一个错误:所以看起来Swift不再认为它在形式之内并且正在关注

随机推荐

  1. xe-ajax-mock 前端虚拟服务

    最新版本见Github,点击查看历史版本基于XEAjax扩展的Mock虚拟服务插件;对于前后端分离的开发模式,ajax+mock使前端不再依赖后端接口开发效率更高。CDN使用script方式安装,XEAjaxMock会定义为全局变量生产环境请使用xe-ajax-mock.min.js,更小的压缩版本,可以带来更快的速度体验。

  2. vue 使用 xe-ajax

    安装完成后自动挂载在vue实例this.$ajaxCDN安装使用script方式安装,VXEAjax会定义为全局变量生产环境请使用vxe-ajax.min.js,更小的压缩版本,可以带来更快的速度体验。cdnjs获取最新版本点击浏览已发布的所有npm包源码unpkg获取最新版本点击浏览已发布的所有npm包源码AMD安装require.js安装示例ES6Module安装通过Vue.use()来全局安装示例./Home.vue

  3. AJAX POST数据中文乱码解决

    前端使用encodeURI进行编码后台java.net.URLDecoder进行解码编解码工具

  4. Koa2框架利用CORS完成跨域ajax请求

    实现跨域ajax请求的方式有很多,其中一个是利用CORS,而这个方法关键是在服务器端进行配置。本文仅对能够完成正常跨域ajax响应的,最基本的配置进行说明。这样OPTIONS请求就能够通过了。至此为止,相当于仅仅完成了预检,还没发送真正的请求呢。

  5. form提交时,ajax上传文件并更新到&lt;input&gt;中的value字段

  6. ajax的cache作用

    filePath="+escape;},error:{alert;}});解决方案:1.加cache:false2.url加随机数正常代码:网上高人解读:cache的作用就是第一次请求完毕之后,如果再次去请求,可以直接从缓存里面读取而不是再到服务器端读取。

  7. 浅谈ajax上传文件属性contentType = false

    默认值为contentType="application/x-www-form-urlencoded".在默认情况下,内容编码类型满足大多数情况。在这里,我们主要谈谈contentType=false.在使用ajax上传文件时:在其中先封装了一个formData对象,然后使用post方法将文件传给服务器。说到这,我们发现在JQueryajax()方法中我们使contentType=false,这不是冲突了吗?这就是因为当我们在form标签中设置了enctype=“multipart/form-data”,

  8. 909422229_ajaxFileUpload上传文件

    ajaxFileUpload.js很多同名的,因为做出来一个很容易。我上github搜AjaxFileUpload出来很多类似js。ajaxFileUpload是一个异步上传文件的jQuery插件传一个不知道什么版本的上来,以后不用到处找了。语法:$.ajaxFileUploadoptions参数说明:1、url上传处理程序地址。2,fileElementId需要上传的文件域的ID,即的ID。3,secureuri是否启用安全提交,默认为false。4,dataType服务器返回的数据类型。6,error

  9. AJAX-Cache:一款好用的Ajax缓存插件

    原文链接AJAX-Cache是什么Ajax是前端开发必不可少的数据获取手段,在频繁的异步请求业务中,我们往往需要利用“缓存”提升界面响应速度,减少网络资源占用。AJAX-Cache是一款jQuery缓存插件,可以为$.ajax()方法扩展缓存功能。

  10. jsf – Ajax update/render在已渲染属性的组件上不起作用

    我试图ajax更新一个有条件渲染的组件。我可以确保#{user}实际上是可用的。这是怎么引起的,我该如何解决呢?必须始终在ajax可以重新呈现之前呈现组件。Ajax正在使用JavaScriptdocument.getElementById()来查找需要更新的组件。但是如果JSF没有将组件放在第一位,那么JavaScript找不到要更新的内容。解决方案是简单地引用总是渲染的父组件。

返回
顶部