Es sieht so aus, als hätten Leute in der Vergangenheit Probleme mit Accept-Headern gehabt, aber ich bin mir nicht sicher, ob mein Problem damit zusammenhängt. Mit jQuery 1.4.2 habe ich Probleme, JSON mit getJSON()
zu bekommen. Ich kann die Anfrage/Antwort in Firebug beobachten und es sieht so aus, als ob die Quelle des Problems ist, dass die betreffende Ressource abhängig vom Accept-Header unterschiedliche Ergebnisse zurückgibt. Obwohl die Dokumente sagen, dass es eingestellt werden sollte, zeigt es sich in Firebug als "/" - offensichtlich will ich "application/json". Ist das ein bekannter Fehler? Soll ich eine Flagge setzen, von der ich nichts weiß?JQuery's getJSON() Accept Header korrekt einstellen?
ETA: Die Anfrage ist Cross-Site, wenn das wichtig ist, aber ich übergebe einen callback=?
Abfrageparameter, so dass JQuery (erfolgreich!) Behandelt es als JSONP. Der Service, den ich in diesem speziellen Fall anrufe, unterstützt einen accept override Abfrageparameter (&accept=application/json
), also habe ich es manuell ausgeführt, aber ich halte den Header-Screwup immer noch für merkwürdig und hoffte, dass ich es beheben könnte. Ich stoße nicht mehr darauf, wenn ich mit einem anderen Dienst zu tun habe, der vielleicht nicht so verzeihend ist. Ich habe nicht eine einfache Möglichkeit, müssen Sie den Code aus meiner Entwicklungsumgebung zu kopieren/einfügen, aber hier ist das Wesentliche:
$.getJSON(baseURL + "?item=" + itemNum + "&callback=?", function(data){
console.log(data);
}
Wie Sie sehen können, ist dies nicht gerade komplex und sollte (I 99 bin % sure ...) führt dazu, dass ein XHR mit einem Accept-Header von application/json
gesendet wird. Wie ich schon sagte, das passiert nicht, per Firebugs Net-Konsole. Wenn es darauf ankommt, ist dies in Firefox 3.6.8.
ETA Nochmal: Für jeden, der das noch liest, ja, es passiert immer noch, und nein, ich habe keine Ahnung warum. Wie ich schon sagte, einfacher Aufruf getJSON(), wirklich grundlegende Syntax, Cross-Site, wie JSONP behandelt, weil es einen Callback-Abfrageparameter enthält. Immer noch offen für Vorschläge!
Zeigen Sie uns Ihren Code und wir helfen Ihnen vielleicht mehr. – Steven
Ich habe genau das gleiche Problem in Chrome 8. $ .getJSON ("URL", Funktion (Daten) {}) setzt die Accept-Kopfzeile auf */* –