博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
兼容ie的jquery ajax文件上传
阅读量:6246 次
发布时间:2019-06-22

本文共 10104 字,大约阅读时间需要 33 分钟。

Ajax文件上传插件很多,但兼容性各不一样,许多是对ie不兼容的,另外项目中是要求将网页内容嵌入到桌面端应用的,这样就不允许带flash的上传插件了,如:jquery uploadify。。。悲剧

 

对于Ajax文件上传,大体是有:

  1、创建一个input type="file" 的文件上传按钮,根据其id监听绑定其change事件,在事件中用jquery创建一个iframe,嵌入添加隐藏form,同时创建input type="file",id相同的文件上传按钮,并传入其他需要提交的数据,然后提交,提交完成后移除一个input type="file",这样用bind或on的绑定就对新的input 框失效,需要重新再绑定一次change事件,以前的jquery是可以使用live函数代替的,现在只能在文件上传成功后再绑定一次change事件。

1 $(function() { 2     uploadFile("fileData",'cn.ftiao.cm.model.LiveCourse','',"CI"); 3 }); 4  5 function uploadFile(id,classFullName,jsonStrValue,preFileName){ 6     $("#"+id).on("change", function(){ 7         // 上传方法 8         $.ajaxFileUpload({ 9             url:$("#"+id).attr("data-url-upload"),            //需要链接到服务器地址10             secureuri:false,11             type:"post",12             fileElementId:id,                        //文件选择框的id属性13             dataType: 'json', 14             data:{15                 "classFullName":classFullName,16                 "jsonStrValue":"",17                 "preFileName":preFileName18             },19             //服务器返回的格式,可以是json20             success: function (data, status){          //相当于java中try语句块的用法21                 $("#courseIconImg").attr("src",$(".ctx").val()+"/images/img-class.png");22                 alert("hello");23                 //先将原有的上传展示清除24                 $("#" + id).nextAll("span").remove();25                 $("#courseIcon").val(data.outputFileName);26 //                    $("#coursewareFile").val(data.outputFileName);27                     var uploadHtml = "";28                     uploadHtml +=  data.fileUploadName ;29                     uploadHtml += " 预览   删除 ";30                     uploadHtml += "";31 //                    $("#"+id).parents("li").append(uploadHtml);32                     uploadFile("fileData",'cn.ftiao.cm.model.LiveCourse','',"CI");33             },34             error: function (data, status, e)    //相当于java中catch语句块的用法35             {36                 alert(e);37             }38         });39     });40     return false;41 }
View Code

 

  2、创建一个 input type="file"的按钮,监听其click事件,然后创建iframe,隐藏form,隐藏form里有个 input type="file"的文件上传框,模拟点击click,弹出文件选择框,选择完文件后上传。此方法在ie下会报 “权限不足” 问题。

 

下面是ajaxFileUpload 插件

1 jQuery.extend({  2       3     handleError: function(s, xhr, status, e) {  4         // If a local callback was specified, fire it  5         if (s.error) {  6             s.error.call(s.context || window, xhr, status, e);  7         }  8   9         // Fire the global callback 10         if (s.global) { 11             (s.context ? jQuery(s.context) : jQuery.event).trigger("ajaxError", [xhr, s, e]); 12         } 13     }, 14     createUploadIframe: function(id, uri) 15     { 16             //create frame 17             var frameId = 'jUploadFrame' + id; 18             var iframeHtml = '
View Code

 

转载于:https://www.cnblogs.com/xunux/p/3887187.html

你可能感兴趣的文章
网络工程师
查看>>
在C#下的SQL模糊查询语句 (Visual Studio)
查看>>
第三章 广域通信网
查看>>
xhtml+css基础知识2
查看>>
我的友情链接
查看>>
Java环境变量配置
查看>>
Magent搭建Memcached集群
查看>>
SQL Server远程备份报错:Operating system error 1326
查看>>
域名转移和域名DNS修改
查看>>
域名查找及错误检查
查看>>
JavaScript 字符串处理详解
查看>>
Linux 查看系统硬件信息(实例详解)
查看>>
Linux系统开发8 线程
查看>>
我的友情链接
查看>>
linux安装过程对硬盘进行分区
查看>>
linux安装eclipse集成开发环境
查看>>
像少年啦飞驰
查看>>
Advanced+Apple+Debugging(1)
查看>>
EIGRP实验 3 :EIGRP 拓扑、路由以及汇聚
查看>>
我的友情链接
查看>>