您的位置:首页 > 产品设计 > UI/UE

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

2019-07-11 10:35 471 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/weixin_44220680/article/details/95452972

昨天,朋友遇到一个很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请求里面去。

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

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐