Heim  >  Artikel  >  Web-Frontend  >  Wie behebe ich den Fehler „Unerwarteter Token-Doppelpunkt“ in JSONP-Anfragen mit jQuery.ajax#get?

Wie behebe ich den Fehler „Unerwarteter Token-Doppelpunkt“ in JSONP-Anfragen mit jQuery.ajax#get?

Linda Hamilton
Linda HamiltonOriginal
2024-10-19 22:54:02963Durchsuche

How to Resolve

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn