美文网首页
ajax在ie8下看不到请求

ajax在ie8下看不到请求

作者: 薯条你哪里跑 | 来源:发表于2019-08-21 16:11 被阅读0次

背景:

由于平台要求兼容ie8,开发完成后想着在ie8上看看样式有没有变化,结果样式没问题,但是onmouseover之后的请求不见了,,,

初步怀疑:
  1. ie8不支持mouseover事件
  2. ajax没发出去
初步排查:
  1. mouseover 事件已经执行
  2. 抓包工具并没有抓到请求
    $.ajax({
      type: 'get',
      url: "//XXX.xx.com/wxlsewm",
      dataType: 'json',
      success: function (data) {
       console.log('啊啊啊啊啊啊啊,我进来了');
      }
    });

但这就是很普通的ajax啊,,泪奔。。。

再次怀疑:

是不是因为跨域 ?!
在将url换成同域名之后,发现确实在network里看到这条请求了,锁定问题,ie8、9跨域的时候请求会被屏蔽发不出去。

解决:

crossDomainAjax('http://www.somecrossdomaincall.com/?blah=123', function (data) {
    // success logic
});

function crossDomainAjax (url, successCallback) {

    // IE8 & 9 only Cross domain JSON GET request
    if ('XDomainRequest' in window && window.XDomainRequest !== null) {

        var xdr = new XDomainRequest(); // Use Microsoft XDR
        xdr.open('get', url);
        xdr.onload = function () {
            var dom  = new ActiveXObject('Microsoft.XMLDOM'),
                JSON = $.parseJSON(xdr.responseText);

            dom.async = false;

            if (JSON == null || typeof (JSON) == 'undefined') {
                JSON = $.parseJSON(data.firstChild.textContent);
            }

            successCallback(JSON); // internal function
        };

        xdr.onerror = function() {
            _result = false;  
        };

        xdr.send();
    } 

    // IE7 and lower can't do cross domain
    else if (navigator.userAgent.indexOf('MSIE') != -1 &&
             parseInt(navigator.userAgent.match(/MSIE ([\d.]+)/)[1], 10) < 8) {
       return false;
    }    

    // Do normal jQuery AJAX for everything else          
    else {
        $.ajax({
            url: url,
            cache: false,
            dataType: 'json',
            type: 'GET',
            async: false, // must be set to false
            success: function (data, success) {
                successCallback(data);
            }
        });
    }
}

亲测有效!!!

参考: https://stackoverflow.com/questions/3362474/jquery-ajax-fails-in-ie-on-cross-domain-calls

相关文章

  • ajax在ie8下看不到请求

    背景: 由于平台要求兼容ie8,开发完成后想着在ie8上看看样式有没有变化,结果样式没问题,但是onmouseov...

  • SpringBoot 解决 application/octet-

    前端为了兼容IE8和跨域做了很多操作(我也不懂),之后发现了一个问题,IE8下所有的ajax请求都是 applic...

  • IE8下GetJson请求只能发送一次的解决办法

    1.问题描述 做项目的过程中,在IE8下 使用getJson请求数据,多次测试发现由于IE8的锅,在IE8下只会真...

  • IE8和IE9的跨域AJAX

    IE8和IE9的跨域AJAX 在jQuery 1.5+中使用$ .ajax功能时,可以使用IE8和IE9的对象实现...

  • ajax请求在IE下请求失败

    项目要求兼容IE,但是在IE edge下加载不出数据,debug后发现所有ajax请求都失败,{readyStat...

  • ajax

    Ajax 1 - 请求纯文本 Ajax 2 - 请求JSON数据 Ajax 3 - 请求Github接口 Ajax...

  • ajax在什么情况下走success和error

    先简单介绍下ajax: Ajax请求通过XMLHttpRequest对象发送请求,该对象有四个状态(readySt...

  • 2017.10.31

    ajax原理 ajax的核心 GET 情况下 创建ajax链接 打开链接 发送请求 接收响应 ajax状态码: 0...

  • ajax

    特点 ajax ajax入门 ajax请求与发送数据 ajax工具类封装 type:请求类型url:请求地址dat...

  • 02Ajax请求的使用详解以及实例,含源码

    第一个简单的Ajax请求用例 请求本地文件(在服务器环境下打开) 创建一个原生的兼容写法的Ajax请求 一个Aja...

网友评论

      本文标题:ajax在ie8下看不到请求

      本文链接:https://www.haomeiwen.com/subject/ticisctx.html