美文网首页
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下看不到请求

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