ホームページ  >  記事  >  ウェブフロントエンド  >  jQuery.ajax#get を使用して JSONP リクエストの「予期しないトークン コロン」エラーを解決する方法

jQuery.ajax#get を使用して JSONP リクエストの「予期しないトークン コロン」エラーを解決する方法

Linda Hamilton
Linda Hamiltonオリジナル
2024-10-19 22:54:021077ブラウズ

How to Resolve

予期しないトークン コロン: jQuery.ajax#get での JSONP エラーの解決

jQuery.ajax で「予期しないトークン コロン」エラーが発生した場合#get では、JSONP (パディング付き JSON) リクエストの性質を理解することが重要です。 JSONP には、クライアント側のグローバル JavaScript 関数呼び出しに JSON データを送り返すことが含まれます。

JSONP をサポートするには、サーバーは応答に「パディング」を含める必要があります。 「パディング」は、コールバック関数名の後にかっこで囲まれた JSON データで構成されます。

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

この例では、コールバック関数名は jQuery111108398571682628244_1403193212453 です。このエラーは、JavaScript が JSONP を JavaScript として解析するために発生します。ここで、{...} もブロックを表します。

このエラーを修正するには、サーバーは応答に「パディング」を含める必要があります。さらに、jQuery には通常、関数の名前を含むコールバック クエリ文字列パラメータが含まれます。これに対応するために、サーバー コードは条件ステートメントを使用してコールバック パラメーターをチェックし、それに応じて応答を送信できます。

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

あるいは、ExpressJS はこの条件をすでに処理する res.jsonp() メソッドを提供します。 JSONP 応答を返しやすくします:

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

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

以上がjQuery.ajax#get を使用して JSONP リクエストの「予期しないトークン コロン」エラーを解決する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。