Heim >Web-Frontend >js-Tutorial >Wie behebe ich den Fehler „Unerwarteter Token-Doppelpunkt' in JSONP-Anfragen mit jQuery.ajax#get?
Unerwarteter Token-Doppelpunkt: Beheben von JSONP-Fehlern in jQuery.ajax#get
Beim Auftreten eines „Unerwarteten Token-Doppelpunkts“-Fehlers in jQuery.ajax #get, es ist wichtig, die Natur von JSONP-Anfragen (JSON with Padding) zu verstehen. Bei JSONP werden JSON-Daten an einen globalen JavaScript-Funktionsaufruf auf der Clientseite zurückgesendet.
Um JSONP zu unterstützen, muss der Server das „Padding“ in die Antwort einschließen. Das „Padding“ besteht aus einem Callback-Funktionsnamen, gefolgt von den in Klammern eingeschlossenen JSON-Daten:
jQuery111108398571682628244_1403193212453({"Name":"Tom","Description":"Hello it's me!"})
In diesem Beispiel lautet der Callback-Funktionsname jQuery111108398571682628244_1403193212453. Der Fehler tritt auf, weil JavaScript JSONP als JavaScript analysiert, wobei {...} auch Blöcke darstellt.
Um diesen Fehler zu beheben, muss der Server das „Padding“ in die Antwort einschließen. Darüber hinaus enthält jQuery normalerweise einen Rückruf-Abfragezeichenfolgenparameter mit dem Namen der Funktion. Um dies zu berücksichtigen, kann der Servercode eine bedingte Anweisung verwenden, um den Rückrufparameter zu prüfen und die Antwort entsprechend zu senden:
var callback = req.query.callback; var data = JSON.stringify({ Name : "Tom", Description : "Hello it's me!" }); if (callback) { res.setHeader('Content-Type', 'text/javascript'); res.end(callback + '(' + data + ')'); } else { res.setHeader('Content-Type', 'application/json'); res.end(data); }
Alternativ stellt ExpressJS eine res.jsonp()-Methode bereit, die diese Bedingung bereits verarbeitet. Dies erleichtert die Rückgabe von JSONP-Antworten:
app.get( '/', function( req, res ) { console.log( 'req received' ); res.jsonp({ Name : "Tom", Description : "Hello it's me!" }); });
Das obige ist der detaillierte Inhalt vonWie behebe ich den Fehler „Unerwarteter Token-Doppelpunkt' in JSONP-Anfragen mit jQuery.ajax#get?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!