Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Mengapakah Panggilan AJAX jQuery Menerima Data Tidak Betul Walaupun PHP Mengembalikan JSON?

Mengapakah Panggilan AJAX jQuery Menerima Data Tidak Betul Walaupun PHP Mengembalikan JSON?

Patricia Arquette
Patricia Arquetteasal
2024-10-31 20:55:17824semak imbas

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

PHP Mengembalikan JSON ke jQuery AJAX Call

Walaupun anda berusaha untuk berkomunikasi dengan PHP melalui fungsi AJAX jQuery, anda sentiasa menghadapi " ralat pemilih diaktifkan". Selain itu, data yang diambil kelihatan tidak betul. Mari kita selidiki isu ini dan kenal pasti punca yang berpotensi.

PHP dengan JSON Return

Coretan yang disediakan di bawah menggambarkan cara mengembalikan data JSON dalam PHP:

<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>

Perhatikan kemasukan header('Content-Type: application/json'); sebelum gema untuk menentukan jenis kandungan JSON.

JavaScript dan AJAX

Kod JavaScript anda di bawah harus mengendalikan panggilan AJAX dengan jayanya:

<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>

Pastikan panggilan AJAX anda dicetuskan hanya selepas pengesahan borang untuk mengelakkan permintaan pelayan yang tidak perlu.

Data JSON Sepatutnya Disenaraikan

Output yang anda peroleh tidak berformat JSON. Nampaknya objek XHR jQuery sedang dicetak.

Potensi Perangkap

Sahkan yang berikut:

  • Pastikan skrip PHP anda adalah membalas dengan jenis kandungan yang betul (Content-Type: application/json).
  • Pastikan dataType panggilan AJAX anda ditetapkan kepada "json".
  • Pastikan skrip berjaya dilaksanakan pada pelayan, dan PHP itu dikonfigurasikan untuk mengendalikan output JSON.

Atas ialah kandungan terperinci Mengapakah Panggilan AJAX jQuery Menerima Data Tidak Betul Walaupun PHP Mengembalikan JSON?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn