簡體   English   中英

AJAX 請求在 IE8 和 IE9 中不起作用

[英]AJAX request not working in IE8 and IE9

此 AJAX 代碼可在 IE10+ 和 Chrome 以及其他瀏覽器中運行,但在 IE8 和 IE9 中不起作用。

<table id="table" border="1"> 
    <tbody style="display: table-row-group"></tbody>
</table>

jQuery(document).ready(function(){
    $.support.cors = true;

    var url = "https://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20yahoo.finance.xchange%20where%20pair%20in%20(%22EURUSD%22%2C%20%22CADUSD%22%2C%20%22GBPUSD%22%2C%20%22AEDUSD%22%2C%20%22TRYUSD%22%2C%20%22RUBUSD%22%2C%20%22INRUSD%22%2C%20%22SARUSD%22)&format=json&env=store%3A%2F%2Fdatatables.org%2Falltableswithkeys&callback=";

    var $tbody = $('#table').find('tbody');
    var $thead = $('#table').find('thead');

    $.ajaxSetup({ cache: false });

    $.ajax({
        crossDomain: true,
        type: "GET",
        url: url,
        cache: false
    }).done(function (data) {
        alert("lev 2 ");
        var ObjectKeys = Object.keys(data.query.results.rate[0]);
        var row = "<tr>";
        row += "</tr>";
        $thead.append(row);

        $.each(data.query.results.rate, function (i, el) {
            console.log("lev 3 = " + i);
            $tbody.append($('<tr />').append($('<td />').text(el.id)).append($('<td />').text(el.Name)).append($('<td />').text(el.Rate)).append($('<td />').text(el.Ask)).append($('<td />').text(el.Bid)));
        });
    });        
});

我怎么解決這個問題?

演示小提琴在這里

問題是 IE8 不支持跨域資源共享 (CORS) XHR,因此您無法使用本機 XHR 或 jQuery 的 $.ajax 進行跨域 ajax 調用。

對於 IE8,Microsoft 決定提出他們自己的跨域 XHR,而不是使用稱為XDomainRequest的 CORS XHR,因此您必須實現它以支持 IE8 用戶。 可以在此答案中找到示例用法。

或者,您可以通過本地服務器端代理跨域請求,使外部請求成為服務器到服務器的情況,這將不受同源策略的約束

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM