Unerwartetes Token : beim Versuch, einen JSON-string Parsen
Ich versuche zu Parsen JSON-string:
{ "RESULTS": [ { "name": "Thessaloniki GR", "type": "Sailing", "l": "/sailing-weather/beach:Porto%20Carras%20Marina 45904" }, { "name": "Thessaloniki, Greece", "type": "city", "c": "GR", "zmw": "00000.1.16622", "tz": "Europe/Athens", "tzs": "EET", "l": "/q/zmw:00000.1.16622" } ] }
abgefragt wird von hier
Dies ist mein snippet:
$(document).ready(function () {
$("#w11").autocomplete({
source: function (a, b) {
$.ajax({
url: "http://autocomplete.wunderground.com/aq",
dataType: "jsonp",
data: {
format: "jsonp",
query: a.term
},
success: function (a) {
for (i in data.RESULTS) {
console.log(data.RESULTS);
}
}
})
}
});
});
Gibt mir eine Fehlermeldung Uncaught SyntaxError: Unexpected token :
auf die erste Zeile, die ist { "RESULTS": [
Wie kann ich das Parsen der JSON-Ergebnisse?
- ur jquery-code-Fehler
- Dein code hat ein paar Probleme, aber Sie sind nicht das problem. Die Probleme sind 1. Sie haben mehrere fehlende Semikolons. Empfehle ich nicht sich auf den Schwachsinn, der automatic semicolon insertion. 2. Sie scheinen zu sein, zum Opfer zu fallen Die Schrecken des Impliziten Globals, wie Sie nicht erklären
i
überall. 3. Die Schleife wird wiederholt Protokollierung Ihrer gesamten Reaktion überconsole.log(data.RESULTS);
. Sie meinte wahrscheinlichconsole.log(data.RESULTS[i]);
oder so etwas. - UND die
a
imsuccess: function (a)
solltedata
.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Haben Sie gesagt jQuery zu erwarten JSON-P, nicht JSON:
...aber das Ergebnis ist JSON. JSON-P und JSON sind grundlegend verschiedene Dinge. Hier ist ein Beispiel JSON response:
Hier ist, was ein JSON-P Antwort könnte so Aussehen:
oder
Wenn
http://autocomplete.wunderground.com/a
ist nicht auf den gleichen Ursprung hat wie das Dokument, Ihr code ausgeführt wird, werden Sie nicht in der Lage, zum abrufen von JSON aus es per ajax, weil der Same-Origin-Policy (es sei denn, der betreffende server unterstützt CORS, können Ihre Herkunft für die Anfrage, und browser, die der Benutzer hat, unterstützt auch CORS). Was ich vermute ist, warum Sie versucht, JSON-P, und das funktioniert auch cross-origin. Die Sache ist aber, dass die server hat zur Unterstützung der JSON-P als auch. Trotz derformat=jsonp
in der URL, der server reagiert nicht mit JSON-P, aber mit JSON.In die Kommentare, die Sie im Zusammenhang mit Ihre Dokumentation für die API, die zeigen, dass Sie tun Unterstützung von JSON-P, nur mit einem nicht-standard-argument-Namen in der URL (
cb
statt der viel häufigercallback
).So sollte das klappen (hab ich auch behoben die Probleme mit dem code, den ich bereits in meinem Kommentar auf die Frage):
Und in der Tat, es funktioniert: Live-Beispiel | Quelle
Den
jsonp
argument sagt jQuery welche URL-parameter zu verwenden, definieren Sie den Namen der JSON-P-Rückruf. Die Voreinstellung ist der standard -callback
aber, dass die API verwendet einen nicht-standard-argument.