IE8发送ajax方法解决

IE8发送ajax问题

  • 如果$.ajax中没有设置错误抛出,会发现在ie8的ajax请求一点反应没有,network看不到请求,那是因为ie8会默认拦截跨域的请求
$.ajax({
	url,
	method: "get",
	error: function (err) { // 抛出错误
		console.log(err);
	},
});
  • ie8会抛出error: 拒绝访问的错误,网上搜到的解决方法可能没有解释全或者不同环境导致,都无法解决
    • 方法1:给IE浏览器设置一下安全策略,internet选项—》安全----》自定义级别—》其他—》通过域访问数据源,但我设置没有效果,重启电脑都不行
    • 方法2:Ajax请求之前设置jQuery.support.cors = true,也不行,$.support.cors = true是一样的。
    • 方法3:修改ajax的xhr方法,ie8会报错误Automation 服务器不能创建对象,修改的IE的安全策略全部提示或者允许都不行
    jQuery.ajaxSetup({
        xhr: function () {
          if (window.ActiveXObject) {
            return new ActiveXObject("Microsoft.XMLHTTP");
          } else {
            return new XMLHttpRequest();
          }
        }
    });
    
    • 还有各种方法,忘记了。。

解决方法

  1. IE8、9不支持跨域的ajax请求,跨域对象只能用XDomainRequest对象,而jQuery并不兼容XDomainRequest,这时候就需要增加jQuery插件jquery.xdomainrequest.min.js,网上可以搜索下载,或在文末复制(传送门
  2. 需要把该文件的引入放在jquery引入的下面,然后在所有ajax请求之前加上(加一次就可以了。)
$.support.cors = true;
$.ajaxSetup({
	cache: false,
})
  1. ajax请求需要加上dataType: "json",具体原因不知道为啥,加上就可以了。。

如果是easyui的datagrid的请求封装则不需要加这个,可能已经封装在里面了。。

  1. 如果上面还不行,试下放到tomcat里面打开,不要在本地运行,或者修改IE的安全策略

还不行就爱莫能助了,继续搜解决方法去吧。。

jquery.xdomainrequest.min.js
/*!
 * jQuery-ajaxTransport-XDomainRequest - v1.0.4 - 2015-03-05
 * https://github.com/MoonScript/jQuery-ajaxTransport-XDomainRequest
 * Copyright (c) 2015 Jason Moon (@JSONMOON)
 * Licensed MIT (/blob/master/LICENSE.txt)
 */
(function(a){if(typeof define==='function'&&define.amd){define(['jquery'],a)}else if(typeof exports==='object'){module.exports=a(require('jquery'))}else{a(jQuery)}}(function($){if($.support.cors||!$.ajaxTransport||!window.XDomainRequest){return $}var n=/^(https?:)?\/\//i;var o=/^get|post$/i;var p=new RegExp('^(\/\/|'+location.protocol+')','i');$.ajaxTransport('* text html xml json',function(j,k,l){if(!j.crossDomain||!j.async||!o.test(j.type)||!n.test(j.url)||!p.test(j.url)){return}var m=null;return{send:function(f,g){var h='';var i=(k.dataType||'').toLowerCase();m=new XDomainRequest();if(/^\d+$/.test(k.timeout)){m.timeout=k.timeout}m.ontimeout=function(){g(500,'timeout')};m.onload=function(){var a='Content-Length: '+m.responseText.length+'\r\nContent-Type: '+m.contentType;var b={code:200,message:'success'};var c={text:m.responseText};try{if(i==='html'||/text\/html/i.test(m.contentType)){c.html=m.responseText}else if(i==='json'||(i!=='text'&&/\/json/i.test(m.contentType))){try{c.json=$.parseJSON(m.responseText)}catch(e){b.code=500;b.message='parseerror'}}else if(i==='xml'||(i!=='text'&&/\/xml/i.test(m.contentType))){var d=new ActiveXObject('Microsoft.XMLDOM');d.async=false;try{d.loadXML(m.responseText)}catch(e){d=undefined}if(!d||!d.documentElement||d.getElementsByTagName('parsererror').length){b.code=500;b.message='parseerror';throw'Invalid XML: '+m.responseText;}c.xml=d}}catch(parseMessage){throw parseMessage;}finally{g(b.code,b.message,c,a)}};m.onprogress=function(){};m.onerror=function(){g(500,'error',{text:m.responseText})};if(k.data){h=($.type(k.data)==='string')?k.data:$.param(k.data)}m.open(j.type,j.url);m.send(h)},abort:function(){if(m){m.abort()}}}});return $}));
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值