2013-07-09 2 views
1

Как исправить переписывание запроса Ajax, чтобы он работал в IE 8 +, используя XDomainRequest?Междоменный запрос AJAX IE 8+

$.ajax({ 
    type: "GET", 
    url: url, 
    success: function(xml) { 
     $('.post-msg').append(processXml(xml, config)); 
    }, 
    error: function(jqXhr, textStatus, errorThrown) { 
     var errorMsg = "Request on url: " + url + " failed: " + textStatus + " error:" + errorThrown; 
     alert(errorMsg); 
    } 
}); 
+0

возможно дубликат [запрос Междоменного Аякса] (http://stackoverflow.com/questions/15477527/cross-domain-ajax-request) –

+0

поддерживает ли сайт JSONP? Я знаю, что jQuery не поддерживает корс для IE 8 и 9, потому что xmlhttprequest этих браузеров не поддерживает его, и поскольку все причуды, которые поставляются со специальным объектом, который IE 8 (и я думаю, IE 9) имеют с CORS, команда jQuery имеет отказался от создания этого другого объекта. Поэтому, если на сайте есть JSONP, тогда используйте это, если у него есть CORS, тогда напишите свой собственный запрос xhr, но все равно будете работать с ошибками в IE 8 или 9. – HMR

+1

[CORS с jQuery и XDomainRequest в IE8/9] (http://stackoverflow.com/questions/11487216/cors-with-jquery-and-xdomainrequest-in-ie8-9) содержит некоторые полезные справочные и библиотечные ссылки. – apsillers

ответ

5

Используйте этот плагин для поддержки X8 для поддержки IE8-9.

https://github.com/MoonScript/jQuery-ajaxTransport-XDomainRequest

+0

Причина, по которой jQuery не поддерживает CORS в IE 8 и 9 (они могут создавать xDomainRequest вместо XMLHttpRequest), объясняется тем, что поддержка cors в IE 8 и 9 очень бедна и непредсказуема. Я не могу найти точную ссылку в списке ошибок jQuery на данный момент, но есть некоторые веские причины, чтобы не рассматривать CORS, если вы хотите поддерживать IE 8 и 9. – HMR

+1

@HMR Вы, вероятно, ссылаетесь на http://bugs.jquery.com/ticket/8283, который был закрыт как «расширение: плагин», который, как я полагаю, означает «мы не будем поддерживать этот беспорядок, используйте плагин, если нужно». – apsillers

+0

@apsillers Спасибо за то, что нашли ссылку. Я думаю, они ссылаются на упомянутые здесь ограничения: http://blogs.msdn.com/b/ieinternals/archive/2010/05/13/xdomainrequest-restrictions-limitations-and-workarounds.aspx с примечанием о том, что многие запросы xhr будет терпеть неудачу при попытке CORS, ожидая, что это не сработает. Если вы можете жить с этими ограничениями и, возможно, с другими неожиданными результатами, то CORS будет вариантом, но необходимо предупредить, что многие другие программисты не добились успеха и должны были прибегнуть к JSONP в любом случае. – HMR