ajax在ie8下看不到请求

2019-08-21  本文已影响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

上一篇下一篇

猜你喜欢

热点阅读