jQuery .getJSON Firefox 3 Syntax-Fehler, Undefined
Ich bin immer ein syntax-Fehler (undefined line 1 test.js) in Firefox 3, wenn ich diesen code ausführen. Der Alarm richtig funktioniert (es zeigt die 'Arbeit'), aber ich habe keine Ahnung, warum erhalte ich den Syntaxfehler.
jQuery-code:
$.getJSON("json/test.js", function(data) {
alert(data[0].test);
});
test.js:
[{"test": "work"}]
Irgendwelche Ideen? Ich bin mit dieser Arbeit für eine größere .js-Datei, aber ich habe es eingeengt zu diesem code. Was ist verrückt ist, wenn ich ersetzen der lokalen Datei mit einem remote-Pfad gibt es keine syntax-Fehler (hier ein Beispiel):
Kannst du eine test-Fall? Auch sollte man das nicht $.getJSON?
Yep, sorry für die Tippfehler. Ich bin mir nicht sicher, was Sie für Fragen an den test-Fall?
Warum sind Sie Rückgabe ein array in test.js? Warum nicht einfach das Objekt?
Yep, sorry für die Tippfehler. Ich bin mir nicht sicher, was Sie für Fragen an den test-Fall?
Warum sind Sie Rückgabe ein array in test.js? Warum nicht einfach das Objekt?
InformationsquelleAutor Mike | 2008-12-02
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich eine Lösung gefunden, um kick, der Fehler
Nun die Erklärung:
In firefox 3 (und ich davon ausgehen nur firefox DREI) jede Datei, die den mime-Typ "text/xml" Parsen und syntax hin überprüft. Wenn Sie beginnen, Ihre JSON mit ein "[" zu erhöhen wird ein Syntax-Fehler, wenn es beginnt mit "{" eine "Fehlerhaften Fehler" (meine übersetzung für "nicht wohlgeformt").
Wenn ich Zugriff auf meine json-Datei aus einem lokalen Skript - kein server ist in der Fortschritt - ich habe das überschreiben der mime-Typ ist... Vielleicht setzen Sie Ihre MIME-Typ für diese Datei sehr falsch...
Wie auch immer, hinzufügen dieses kleine Stück code, sparen Sie von einer Fehler-Nachricht
Edit: In jquery 1.5.1 oder höher verwenden, können Sie den mimeType option, um den gleichen Effekt erzielen. Um es als Standard für alle Anfragen verwenden Sie
Können Sie es auch mit $.ajax direkt, D. H., Ihre Anrufe übersetzt
Peter: danke, Danke, danke! Ich war mit diesem problem (stackoverflow.com/questions/2618959/...), die ich gelöst mit deiner Antwort hier. Ich machte eine änderung, und das war die Verwendung von "application/json" anstelle von "text/plain".
in deinem zweiten Beispiel mit
$.ajax
,mimeType:'textPlain'
scheint nicht zu funktionieren für mich, in der Erwägung, dassmimeType:'text/plain'
tut.InformationsquelleAutor
getJSON werden können, das beharren auf mindestens einem name:Wert-paar.
Ein gerades array
["item0","item1","Item2"]
ist gültiges JSON, aber da ist nichts zu verweisen, mit der callback-Funktion für getJSON.In dieser kleinen Reihe von Zip-codes:
... Ich war ratlos, bis ich Hinzugefügt, {"result": tag. Danach konnte ich darauf verweisen:
... Ich fand auch, es war nur einfacher zu bedienen $.each().
InformationsquelleAutor Pete Zicari
Das klingt wirklich blöd, aber ändern Sie die Dateierweiterung für test.js aus .js .txt. Ich hatte das gleiche passieren, mit perfekt gültigen JSON-Daten-Dateien mit ziemlich gut jede Erweiterung außer .txt (Beispiel: .json .i18n). Seit ich das geändert habe, die Erweiterung, bekomme ich die Daten und verwenden Sie es nur gut.
Wie gesagt, es klingt dumm, aber es funktionierte für mich.
InformationsquelleAutor Manik
HALLO
Ich habe die gleiche Fehlermeldung beim testen der web-Seite auf meinem lokalen PC, aber sobald es auf dem Host-server der Fehler nicht mehr passiert. Sorry - ich habe keine Ahnung von der Vernunft, aber dachte, es kann helfen, jemand anderes die Spur der Grund
InformationsquelleAutor Natalie
Versuchen umbenennen "test.js" "test.json", das ist das, was Wikipedia sagt, ist die offizielle Erweiterung für JSON-Dateien. Vielleicht ist es das gerade verarbeitet wird, die als Javascript-irgendwann.
InformationsquelleAutor sblundy
Haben Sie versucht, das deaktivieren alle Firefox-Erweiterungen?
Ich bekomme in der Regel einige Fehler in die Firebug-Konsole, die durch die Erweiterungen, die nicht von den Bahnen besucht.
InformationsquelleAutor Serxipc
Überprüfen Sie, ob es
;
am Ende dertest.js
. jQuery führteval("(" + data + ")")
und Semikolon verhindern würde, dass der Firefox vom finden einer schließenden Klammer. Und es könnte einige andere unsichtbare Zeichen, die es verhindert, dies zu tun.Ich kann Ihnen sagen, warum diese remote-Standort arbeiten, obwohl, es ist, weil es ausgeführt wird, in völlig anderer Weise. Da hat es
jsoncallback=?
als Teil des query-Parameter, jQuery denkt, dass es als der JSONP-und tatsächlich fügt es in der DOM innen<script>
- tags. Versuchen Sie verwenden"json/test.js?callback=?"
als Ziel, es könnten auch helfen.InformationsquelleAutor vava
Welchen webserver verwendest du,? Ich hatte einmal ein Problem Lesen eine JSON-Datei, die auf IIS, denn es war nicht definiert, wie ein Gültiger MIME-type.
InformationsquelleAutor cdmckay
Versuchen Sie es konfigurieren der content-type des .js-Datei. Firefox erwartet text/plain, offenbar. Sie können tun, wie Peter Hoffmann hat oben, oder Sie können die content-type-header der server-Seite.
Dies könnte bedeuten, einen server-side-Konfiguration ändern (wie apache-mime.Dateitypen), oder wenn die json-serviert von einem Skript, das setzen des content-type-header im Skript.
Oder zumindest scheint das gemacht zu haben, die Fehler gehen Weg für mich.
InformationsquelleAutor Ian McLaird
Ich hatte ein ähnliches problem aber war die Schleife durch eine for-Schleife. Ich denke, das problem könnte sein, dass der index out of bound".
InformationsquelleAutor Kien Pham
Für die Menschen, die nicht jQuery verwenden, müssen Sie rufen Sie die
overrideMimeType
Methode vor dem Absenden der Anfrage:InformationsquelleAutor oliverpool