ホームページ  >  記事  >  ウェブフロントエンド  >  「jQuery.ajax#get 後に予期しないトークン コロン JSON が発生しました」エラーを解決するにはどうすればよいですか?

「jQuery.ajax#get 後に予期しないトークン コロン JSON が発生しました」エラーを解決するにはどうすればよいですか?

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

How to Resolve the

「jQuery.ajax#get 後の予期しないトークン コロン JSON」: 総合ガイド

はじめに

この問題は、jQuery を使用して AJAX リクエストを作成しようとし、リクエストの構成と互換性のない形式で JSON を返すサーバーからデータを受信したときに発生します。これはイライラするかもしれませんが、根本原因を理解し、適切な解決策を適用すると解決できます。

根本原因

エラー「jQuery の後に予期しないトークン コロン JSON が存在します。 ajax#get」は、サーバーが適切なパディングまたはコールバック クエリ文字列パラメータなしで JSON データを返した場合に発生します。 JSONP (JSON with Padding) は、クロスオリジンリクエストを行うときに使用される手法で、サーバーはブラウザーのセキュリティ制限を回避するために JSON データを関数呼び出しにラップします。ただし、サーバーがパディング パラメータまたはコールバック パラメータを含めることに失敗した場合、ブラウザは応答を無効な JSON として解釈します。

解決策

この問題を解決するには、次のようにします。サーバーが JSONP 応答を正しく生成することを確認する必要があります。これは、JSON データを関数呼び出し内にラップし、クエリ文字列にコールバック パラメーターが確実に含まれるようにすることを意味します。

Node.js Express の場合

Node.js の場合Express では、res.jsonp() メソッドを使用して JSONP 応答を生成できます:

app.get('/', (req, res) => {
  res.jsonp({
    Name: 'Tom',
    Description: 'Hello it's me!'
  });
});

または、パディングとコールバック パラメーターを手動で追加できます:

const callback = req.query.callback;
const 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);
}

jQuery

クライアント側では、dataType: 'jsonp' オプションを指定することで、JSONP を使用するように AJAX リクエストを構成できます:

$.ajax({
  url: findUrl,
  type: 'get',
  dataType: 'jsonp',
  success: (data) => {
    // ...
  },
  error: (jqXHR, textStatus, errorThrown) => {
    // ...
  }
});

結論

サーバーが JSONP 応答を正しく生成し、クライアントがその AJAX リクエストを適切に構成していることを確認することで、「jQuery.ajax#get 後に予期しないトークン コロン JSON が発生しました」エラーを回避し、サーバーから JSON データを正常に取得できます。 .

以上が「jQuery.ajax#get 後に予期しないトークン コロン JSON が発生しました」エラーを解決するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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