ホームページ >バックエンド開発 >PHPチュートリアル >PHP が JSON を返しているにもかかわらず、jQuery の AJAX 呼び出しが間違ったデータを受け取るのはなぜですか?

PHP が JSON を返しているにもかかわらず、jQuery の AJAX 呼び出しが間違ったデータを受け取るのはなぜですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-10-31 20:55:17893ブラウズ

Why is jQuery's AJAX Call Receiving Incorrect Data Even Though PHP is Returning JSON?

PHP が jQuery AJAX 呼び出しに JSON を返す

jQuery の AJAX 機能を通じて PHP と通信しようとしているにもかかわらず、継続的に「セレクターが有効になりました」というエラーが表示されます。さらに、取得されたデータは正しくないように見えます。問題を詳しく調べて、潜在的な原因を特定しましょう。

JSON を返す PHP

以下のスニペットは、PHP で JSON データを返す方法を示しています。

<code class="php">header('Content-Type: application/json');
echo json_encode([
  'return' => 1,
  'msg1' => 'Message sent OK, we will be in touch ASAP'
]);
exit;</code>
header('Content-Type: application/json'); が含まれていることに注意してください。エコーの前に JSON コンテンツ タイプを指定します。

JavaScript と AJAX

以下の JavaScript コードは AJAX 呼び出しを正常に処理する必要があります:

<code class="javascript">$('#msgid').html('<h1>Submitting Form (External Routine)</h1>');
if ($('#formEnquiry').valid()) {
  $("#msgid").append("<h1>(Outside Ready) VALIDATED send to PHP</h1>");
  $.ajax({
    url: "ContactFormProcess3.php",
    type: "POST",
    data: $('#formEnquiry').serialize(),
    dataType: "json",
    success: function (data) {
      alert("SUCCESS:");
      for (var key in data) {
        $('#msgid').append(key);
        $('#msgid').append('=' + data[key] + '<br />');
      }
    },
    error: function (data) {
      alert("ERROR: ");
      for (var key in data) {
        $('#msgid').append(key);
        $('#msgid').append('=' + data[key] + '<br />');
      }
    }
  });
} else {
  $('#msgid').append('<h1>(Outside Ready) NOT VALIDATED</h1>');
}</code>
不必要なサーバー要求を避けるために、フォーム検証後にのみ AJAX 呼び出しがトリガーされるようにしてください。

リストされた想定される JSON データ

取得している出力は JSON 形式ではありません。代わりに jQuery の XHR オブジェクトが出力されているようです。

潜在的な落とし穴

次の点を確認してください:

    PHP スクリプトが正しいコンテンツ タイプ (Content-Type: application/json) で応答します。
  • AJAX 呼び出しの dataType が「json」に設定されていることを確認してください。
  • スクリプトが正常に実行されていることを確認してください。サーバーに接続されており、その PHP は JSON 出力を処理するように構成されています。

以上がPHP が JSON を返しているにもかかわらず、jQuery の AJAX 呼び出しが間違ったデータを受け取るのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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