Maison > interface Web > js tutoriel > 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
Libérer: 2024-10-19 22:54:02
original
1111 Les gens l'ont consulté

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!"})
Copier après la connexion

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);
}
Copier après la connexion

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!"
    });
});
Copier après la connexion

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!

source:php
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal