2012-08-21 13 views
5

cross-domain żądania AJAX (wykonane przy użyciu jQuery 1.7.2) nie są wykonywane w IE9 chyba że prośba dataType jest ustawiony na "jsonp" lub "scenariusz".cross-domain żądania AJAX z IE9

odkryłem tę kwestię w kształtowaniu prośbę gdzie nie dbałem o odpowiedzi, a lewy danych: dataType nieokreślony (tak, wiem, że powinienem dbać o odpowiedzi).

Tak więc, na przykład, będzie to działa:

$.ajax({ 
    url: "http://www.google.com", 
    type: "GET", // or "POST" 
    dataType: 'jsonp' 
}); 

Ale to nie będzie:

$.ajax({ 
    url: "http://www.google.com", 
    type: "GET" // or "POST" 
}); 

Przez "dzieła" To znaczy, że widzę żądania HTTP wykonany w Firebug lub F12 .

Obie prośby działają w innych przeglądarkach. Ustawienie jQuery.support.cors = true; nie ma wpływu na powodzenie, ani ustawienie crossDomain na true, ani cache na false (w żądaniu AJAX).

Dlaczego sukces żądania AJAX zależy od żądanej tylko w IE danych: dataType? Rozumiem, dlaczego wpłynęłoby to na moją zdolność do pracy z dowolnymi zwróconymi danymi; Rozumiem również, że niektóre serwery mogą odrzucić wszystkie żądania określonego typu danych (ale najwyraźniej tak nie jest).

+3

Musisz zrozumieć, czym jest JSONP. – SLaks

+0

Czy znalazłeś rozwiązanie tego problemu? Mam ten sam problem, IE9 + jQuery 1.7.2 obsługujący domenę ajax POSTS z mojej domeny do mojego WebAPI. Mam odpowiednie wsparcie CORS zbudowane po stronie serwera, które pozwala FF/Chrome/Safari działać poprawnie. IE9 po prostu odmawia wydania polecenia OPCJE przed lotem w celu ustalenia wsparcia CORS ... – mellodev

Odpowiedz

1

To nie jest kwestia typu danych, ale z wyraźnie weryfikacji, w przeglądarce, że serwer naprawdę chce odpowiedzieć na to zapytanie.

Nakładając JSONP zmusić serwer mieć bardzo konkretnej odpowiedzi (w tym wywołanie metody).

pamiętać, że istnieją obecnie inne rozwiązania: można ustawić na serwerze, specyficzne nagłówki (patrz https://developer.mozilla.org/en-US/docs/HTTP_access_control)

0

Jeśli przeprowadzasz ajax domeny Krzyż apeluje do obsługi posty formie bez przeładowania strony, ustawienie typu danych "skrypt" pracował dla mnie.

Byłbym bardzo zainteresowany wiarygodnych linki do informacji, aby dowiedzieć się więcej o tym, dlaczego to jest. Wyciągnąłem włosy na kilka dni, nie rozumiejąc, dlaczego działają wszystkie przeglądarki, ale IE9.

@dystroy nawet po umieszczeniu w nagłówkach, które pozwoliły FF do pracy, ale nie zrobić roznicy w IE9 aż użyłem typ danych skryptu

-2

Nie trzeba napisać skrypt, który długo. Po prostu dodaj poniższy kod i zobacz magię.

$(document).ready(function(){ 
jQuery.support.cors = true; 
// call your other functions below..... 
}) 
+0

To jest stare pytanie, które nie jest mi naprawdę potrzebne do kontynuowania, ale proszę zauważyć, że w moim pierwszym poście stwierdzam, że próbowałem ustawić własność 'jQuery.support.cors' to" true ". –

Powiązane problemy