在ie9之中无法使用ajax的问题以及解决方案(以及layui的数据表格解决方案)

昨天,朋友遇到一个很Giao的问题,需要写一个程序,但是电脑系统最高适配IE9,就是说,
要写的代码最低也要兼容ie9!!!

当时博主朋友使用的layui(框架)来进行的前端书写。其他的兼容适配都没有问题,唯一的大Bug便是,在ie9里面jQuery的ajax方法不被兼容!!!ie9竟然不识别ajax!!!

经过长达2小时的搜索,找到的解决方案如下:
设置ajax的crossDomain配置为他的相反值。即:crossDomain: true == !(document.all),
以下时一个实例:

	$.ajax({
		url: "http://dreamfactorysql.cloudapp.net/API/index.php",
		dataType: "text",
		async: true,
		type: 'GET',
		cache: false,
		crossDomain: true == !(document.all), //设置crossDomain
		success: function(txt) {
		alert(txt);
	}
  • 根据解决方案推出的原因所在:
    官方解释
    Cross Domain AJAX主要就是A.com网站的页面发出一个XMLHttpRequest,这个Request的url是B.com,这样的请求是被禁止的,浏览器处于安全考虑不允许进行跨域访问,即同源策略。
    自我理解
    这他娘的就是跨域了,或者说,ie默认你的ajax是跨域的(哪怕没有跨域),所以ie把你的ajax请求,拦截了!!!截了!!!了!!!

  • 针对layui数据表格的解决方案。
    产生问题的原因:

     朋友用的layui的数据表格,是已经封装好的组件,没有给我们设置crossDomain的权限。
    

    解决方法:

     博主是对layui的源码直接进行改动,找到layui的数据表格组件,如何把crossDomain: true == !(document.all),这段直接加到里面的ajax请求里面去。
    

    博主猜测,如果真的是跨域问题的话,那么是否其他几种解决跨域的方法是否也能解决这个问题呢。但是因为懒癌发作,放弃实验。(如果有人愿意尝试,可以留言分享一下结果)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值