2015-10-29 3 views
2

Этот код AJAX работает в IE10 + и Chrome и в другом браузере, но он не работает в IE8 и IE9.Запрос AJAX не работает в 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))); 
     }); 
    });   
}); 

Как я могу решить эту проблему?

DEMO Fiddle Here

+1

http://stackoverflow.com/questions/ 17298808/cross-domain-jquery-ajax-not-working-in-ie9 Пожалуйста, проверьте этот пост. –

+1

Когда вы говорите «не работает», что вы имеете в виду? Сообщение об ошибке в консоли? Запросить время? Ничего не происходит? Запрос возвращает ошибку? – Anders

ответ

1

Вопрос заключается в IE8 не поддерживает Cross Origin Resource Sharing (CORS) XHR, так что вы не можете сделать перекрестный домен Ajax вызова с родной XHR или JQuery в $ .ajax.

Для IE8 Microsoft решила создать свой собственный домен XHR вместо использования CORS XHR, который называется XDomainRequest, поэтому вам придется реализовать его для поддержки пользователей IE8. Пример использования можно найти в this answer.

В качестве альтернативы, вы могли бы прокси запрос перекрестного домена через локальную сторону сервера, что делает внешний запрос на сервер для сервера ситуации, которые не будут подвергаться Same Origin Policy.

Смежные вопросы