Rumah  >  Artikel  >  hujung hadapan web  >  Mengapa permintaan jQuery AJAX saya menghantar data sebagai teks biasa dan bukannya JSON?

Mengapa permintaan jQuery AJAX saya menghantar data sebagai teks biasa dan bukannya JSON?

DDD
DDDasal
2024-10-29 22:46:02459semak imbas

Why is my jQuery AJAX request sending data as plain text instead of JSON?

Menghantar Data JSON Secara Berkesan dengan jQuery

Dalam pembangunan web, selalunya penting untuk menghantar data dengan cekap antara pihak pelanggan dan pelayan. jQuery, perpustakaan JavaScript yang popular, menawarkan kaedah yang mudah untuk mengendalikan pertukaran data tersebut. Satu tugas biasa ialah menghantar data dalam format JSON ke pelayan menggunakan jQuery.

Walau bagaimanapun, kadangkala pembangun menghadapi isu di mana data tidak dihantar dalam format JSON yang dikehendaki tetapi sebagai teks biasa. Untuk memahami sebab ini berlaku, mari kita periksa coretan kod:

var arr = {City:'Moscow', Age:25};
$.ajax(
   {
        url: "Ajax.ashx",
        type: "POST",
        data: arr,
        dataType: 'json',
        async: false,
        success: function(msg) {
            alert(msg);
        }
    }
);

Kod ini cuba menghantar data dalam objek arr ke pelayan Ajax.ashx menggunakan kaedah $.ajax. Walau bagaimanapun, isu ini timbul kerana kod tersebut tidak menyatakan jenis kandungan permintaan atau membina permintaan JSON dengan betul.

Untuk membetulkannya, kaedah JSON.stringify harus digunakan untuk menukar objek JavaScript kepada rentetan JSON asli :

var arr = { City: 'Moscow', Age: 25 };
$.ajax({
    url: 'Ajax.ashx',
    type: 'POST',
    data: JSON.stringify(arr),
    contentType: 'application/json; charset=utf-8',
    dataType: 'json',
    async: false,
    success: function(msg) {
        alert(msg);
    }
});

Perhatian Penting:

  • contentType: Menentukan jenis kandungan permintaan, menunjukkan kepada pelayan bahawa Permintaan JSON sedang dihantar.
  • dataType: Menunjukkan jenis respons yang dijangkakan daripada pelayan.
  • JSON.stringify: Menukar objek JavaScript menjadi rentetan JSON.

Pertimbangan Tambahan:

  • Objek arr sebenarnya ialah objek JavaScript, bukan tatasusunan. Tatasusunan hendaklah dilambangkan dengan [].
  • Berhati-hati dengan respons pelayan dan sahkan bahawa pengepala Jenis Kandungannya mencerminkan respons JSON dengan betul. Jika tidak, jQuery akan cuba menghuraikan respons sebagai JSON tanpa mengira format sebenar.

Atas ialah kandungan terperinci Mengapa permintaan jQuery AJAX saya menghantar data sebagai teks biasa dan bukannya 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