ajax fileupload在ie下form提交不成功,解决 IE下ajaxfileupload不兼容的问题

文章介绍了在Internet Explorer浏览器中遇到ajaxfileupload文件上传不工作的问题及其解决办法。主要涉及两个方面:一是由于IE版本升级导致的代码不兼容,可以通过修改ajaxfileupload.js中的ActiveXObject判断来解决;二是jQuery版本过高不再支持$.browser对象,可以降级jQuery版本或者添加兼容性代码来修复。通过这两种方法,可以成功解决IE下ajaxfileupload文件上传不执行的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近在工作中遇到文件上传在ie下没有反应的问题。于是对ajaxfileupload文件上传进行了学习。ajaxfileupload上传没有反应可能是两方面造成:

1.ie版本升级ajaxfileupload代码不兼容,解决方案,修改ajaxfileupload代码

if(window.ActiveXObject){ vario=document.createElement(''); if(typeofuri=='boolean'){ io.src='javascript:false'; } elseif(typeofuri=='string'){ io.src=uri; } } 修改成 if(window.ActiveXObject){ if(jQuery.browser.version=="9.0"||jQuery.browser.version=="10.0"){ vario=document.createElement('iframe'); io.id=frameId; io.name=frameId; }elseif(jQuery.browser.version=="6.0"||jQuery.browser.version=="7.0"||jQuery.browser.version=="8.0"){ vario=document.createElement(''); if(typeofuri=='boolean'){ io.src='javascript:false'; } elseif(typeofuri=='string'){ io.src=uri; } } }

如果你的ajaxfileupload.js已经修改过,上传依然不执行,那就看第二种方法

2.jquery版本太高,不支持browser对象造成

经过查阅jQuery从1.9版开始,移除了$.browser和$.browser.version,取而代之的是$.support。

解决这一问题有两种方式:第一、更换低版本jquery,缺点其他插件可能回依赖高版本。

第二、在ajaxfileupload中加入一下兼容性代码

(function(jQuery){

if(jQuery.browser) return;

jQuery.browser = {};

jQuery.browser.mozilla = false;

jQuery.browser.webkit = false;

jQuery.browser.opera = false;

jQuery.browser.msie = false;

var nAgt = navigator.userAgent;

jQuery.browser.name = navigator.appName;

jQuery.browser.fullVersion = ''+parseFloat(navigator.appVersion);

jQuery.browser.majorVersion = parseInt(navigator.appVersion,10);

var nameOffset,verOffset,ix;

// In Opera,the true version is after "Opera" or after "Version"

if ((verOffset=nAgt.indexOf("Opera"))!=-1) {

jQuery.browser.opera = true;

jQuery.browser.name = "Opera";

jQuery.browser.fullVersion = nAgt.substring(verOffset+6);

if ((verOffset=nAgt.indexOf("Version"))!=-1)

jQuery.browser.fullVersion = nAgt.substring(verOffset+8);

}

// In MSIE,the true version is after "MSIE" in userAgent

else if ((verOffset=nAgt.indexOf("MSIE"))!=-1) {

jQuery.browser.msie = true;

jQuery.browser.name = "Microsoft Internet Explorer";

jQuery.browser.fullVersion = nAgt.substring(verOffset+5);

}

// In Chrome,the true version is after "Chrome"

else if ((verOffset=nAgt.indexOf("Chrome"))!=-1) {

jQuery.browser.webkit = true;

jQuery.browser.name = "Chrome";

jQuery.browser.fullVersion = nAgt.substring(verOffset+7);

}

// In Safari,the true version is after "Safari" or after "Version"

else if ((verOffset=nAgt.indexOf("Safari"))!=-1) {

jQuery.browser.webkit = true;

jQuery.browser.name = "Safari";

jQuery.browser.fullVersion = nAgt.substring(verOffset+7);

if ((verOffset=nAgt.indexOf("Version"))!=-1)

jQuery.browser.fullVersion = nAgt.substring(verOffset+8);

}

// In Firefox,the true version is after "Firefox"

else if ((verOffset=nAgt.indexOf("Firefox"))!=-1) {

jQuery.browser.mozilla = true;

jQuery.browser.name = "Firefox";

jQuery.browser.fullVersion = nAgt.substring(verOffset+8);

}

// In most other browsers,"name/version" is at the end of userAgent

else if ( (nameOffset=nAgt.lastIndexOf(' ')+1) <

(verOffset=nAgt.lastIndexOf('/')) )

{

jQuery.browser.name = nAgt.substring(nameOffset,verOffset);

jQuery.browser.fullVersion = nAgt.substring(verOffset+1);

if (jQuery.browser.name.toLowerCase()==jQuery.browser.name.toUpperCase()) {

jQuery.browser.name = navigator.appName;

}

}

// trim the fullVersion string at semicolon/space if present

if ((ix=jQuery.browser.fullVersion.indexOf(";"))!=-1)

jQuery.browser.fullVersion=jQuery.browser.fullVersion.substring(0,ix);

if ((ix=jQuery.browser.fullVersion.indexOf(" "))!=-1)

jQuery.browser.fullVersion=jQuery.browser.fullVersion.substring(0,ix);

jQuery.browser.majorVersion = parseInt(''+jQuery.browser.fullVersion,10);

if (isNaN(jQuery.browser.majorVersion)) {

jQuery.browser.fullVersion = ''+parseFloat(navigator.appVersion);

jQuery.browser.majorVersion = parseInt(navigator.appVersion,10);

}

jQuery.browser.version = jQuery.browser.majorVersion;

})(jQuery);

就此完美解决

总结

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值