Wygląda na to, że ludzie mieli problemy z nagłówkami Akceptuj w przeszłości, ale nie jestem pewien, czy mój problem jest związany. Korzystając z jQuery 1.4.2, mam problem z uzyskaniem JSON z getJSON()
. Mogę obejrzeć żądanie/odpowiedź w Firebug i wygląda na to, że źródłem problemu jest to, że dany zasób zwraca różne wyniki w zależności od nagłówka Accept. Chociaż doktorzy mówią, że powinno to być ustawione, w Firebug pojawia się jako "/" - oczywiście, chcę "application/json". Czy to znany błąd? Czy mam ustawić flagę, której nie znam?JQuery getJSON() nie ustawia poprawnie nagłówka Accept?
ETA: Żądanie jest cross-site, jeśli to ma znaczenie, ale przechodzę parametr zapytania callback=?
, więc JQuery jest (pomyślnie!) Traktując go jako JSONP. Usługa, do której dzwonię w tym konkretnym przypadku, obsługuje parametr zapytania nadpisania akceptacji (&accept=application/json
), więc mam go ręcznie, ale nadal uważam, że nagłówek jest dziwny i miałem nadzieję, że będę w stanie to naprawić, więc nie napotkam tego ponownie, gdy mam do czynienia z inną usługą, która może nie być tak wybaczająca. Nie mam w łatwy sposób skopiować/wkleić kod z mojego środowiska rozwoju, ale tutaj jest sedno:
$.getJSON(baseURL + "?item=" + itemNum + "&callback=?", function(data){
console.log(data);
}
Jak widać, nie jest to dokładnie skomplikowane i powinny (Jestem 99 % pewnie ...) powoduje wysłanie XHR z nagłówkiem Accept z numerem application/json
. Tak jak powiedziałem, tak się nie dzieje, za konsolę sieci Firebug. Jeśli ma to znaczenie, jest to w Firefoksie 3.6.8.
ETA Jeszcze raz: dla każdego, kto wciąż czyta to, tak, to wciąż się dzieje, i nie, nie mam pojęcia dlaczego. Tak jak mówiłem, proste wywołanie getJSON(), naprawdę podstawowa składnia, cross site, traktowane jako JSONP, ponieważ zawiera parametr zapytania wywołania zwrotnego. Wciąż otwarte na sugestie!
Pokaż nam swój kod, a my pomożemy Ci jeszcze. – Steven
Mam dokładnie ten sam problem w Chrome 8. $ .getJSON ("url", funkcja (dane) {}) ustawia nagłówek Accept na */* –