Maison  >  Article  >  interface Web  >  Comment résoudre l'erreur « Jeton inattendu deux-points » dans les requêtes JSONP à l'aide de jQuery.ajax#get ?

Comment résoudre l'erreur « Jeton inattendu deux-points » dans les requêtes JSONP à l'aide de jQuery.ajax#get ?

Linda Hamilton
Linda Hamiltonoriginal
2024-10-19 22:54:02963parcourir

How to Resolve

Côlons de jeton inattendus : résolution des erreurs JSONP dans jQuery.ajax#get

Lorsque vous rencontrez une erreur « Côlons de jeton inattendus » dans jQuery.ajax #get, il est important de comprendre la nature des requêtes JSONP (JSON with Padding). JSONP implique de renvoyer les données JSON à un appel de fonction JavaScript global côté client.

Pour prendre en charge JSONP, le serveur doit inclure le « Padding » dans la réponse. Le « Padding » se compose d'un nom de fonction de rappel suivi des données JSON entre parenthèses :

jQuery111108398571682628244_1403193212453({"Name":"Tom","Description":"Hello it's me!"})

Dans cet exemple, le nom de la fonction de rappel est jQuery111108398571682628244_1403193212453. L'erreur se produit car JavaScript analyse JSONP comme JavaScript, où {...} représente également des blocs.

Pour corriger cette erreur, le serveur doit inclure le "Padding" dans la réponse. De plus, jQuery inclura généralement un paramètre de chaîne de requête de rappel avec le nom de la fonction. Pour cela, le code du serveur peut utiliser une instruction conditionnelle pour vérifier le paramètre de rappel et envoyer la réponse en conséquence :

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);
}

Alternativement, ExpressJS fournit une méthode res.jsonp() qui gère déjà cette condition, facilitant le renvoi des réponses JSONP :

app.get( '/', function( req, res ) {
    console.log( 'req received' );

    res.jsonp({
        Name : "Tom",
        Description : "Hello it's me!"
    });
});

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn