Apa perbedaan antara
contentType: "application/json; charset=utf-8",
dataType: "json",
vs.
contentType: "application/json",
dataType: "text",
contentType
adalah header HTTP yang dikirim ke server, menentukan format tertentu. dataType
apakah Anda memberi tahu jQuery respons seperti apa yang diharapkan. The $.ajax()
dokumentasi memiliki deskripsi penuh ini juga.
Dalam kasus tertentu, yang pertama adalah meminta respon untuk berada di UTF-8
, kedua tidak peduli. Juga yang pertama memperlakukan respons sebagai objek JavaScript, yang kedua akan memperlakukannya sebagai string.
Jadi yang pertama adalah:
success: function(data) {
// get data, e.g. data.title;
}
Kedua:
success: function(data) {
alert("Here's lots of data, just a string: " + data);
}
dataType = ""
?(ps: jawaban yang diberikan oleh Nick Craver salah)
contentType menentukan format data yang dikirim ke server sebagai bagian dari permintaan (juga dapat dikirim sebagai bagian dari respons, lebih lanjut tentang itu nanti).
dataType menentukan format data yang diharapkan untuk diterima oleh klien (browser).
Keduanya tidak bisa dipertukarkan.
contentType
adalah header yang dikirim ke server, menentukan format data (yaitu isi dari badan pesan) yang sedang ke server. Ini digunakan dengan permintaan POST dan PUT. Biasanya ketika Anda mengirim permintaan POST, badan pesan terdiri dari parameter yang diteruskan seperti:==============================
Permintaan sampel:
==============================
Baris terakhir di atas "name = sam & age = 35" adalah isi pesan dan contentType menentukannya sebagai aplikasi / x-www-form-urlencoded karena kita meneruskan parameter formulir di badan pesan. Namun kami tidak terbatas hanya mengirim parameter, kami dapat mengirim json, xml, ... seperti ini (mengirim berbagai jenis data sangat berguna dengan layanan web RESTful):
==============================
Permintaan sampel:
==============================
Jadi ContentType kali ini adalah: application / xml, karena itulah yang kami kirim. Contoh di atas menunjukkan permintaan sampel, seperti halnya respons yang dikirim dari server juga dapat memiliki header Tipe Konten yang menentukan apa yang dikirim oleh server seperti ini:
==============================
tanggapan sampel:
==============================
dataType
menentukan format respons yang diharapkan. Ini terkait dengan header Terima. JQuery akan mencoba menyimpulkannya berdasarkan Content-Type dari respons.==============================
Permintaan sampel:
==============================
Permintaan di atas mengharapkan XML dari server.
Mengenai pertanyaan Anda,
Di sini Anda mengirim data json menggunakan set karakter UTF8, dan Anda mengharapkan data json kembali dari server. Sesuai dokumen JQuery untuk tipe data,
Jadi yang Anda dapatkan dalam handler sukses adalah objek javascript yang tepat (JQuery mengonversi objek json untuk Anda)
sedangkan
Di sini Anda mengirim data json, karena Anda belum menyebutkan penyandiannya, sesuai dengan dokumen JQuery,
dan karena tipe data ditentukan sebagai teks, yang Anda dapatkan dalam penangan sukses adalah teks biasa, sesuai dokumen untuk tipe data,
sumber
sesuai dokumen :
"json"
: Mengevaluasi respons sebagai JSON dan mengembalikan objek JavaScript. Di jQuery 1.4 data JSON diuraikan secara ketat; JSON yang salah format ditolak dan kesalahan parse dilemparkan. (Lihat json.org untuk informasi lebih lanjut tentang pemformatan JSON yang tepat.)"text"
: String teks biasa.sumber
jQuery Ajax loader tidak berfungsi dengan baik ketika Anda memanggil dua API secara bersamaan. Untuk mengatasi masalah ini, Anda harus memanggil API satu per satu menggunakan
isAsync
properti di pengaturan Ajax. Anda juga perlu memastikan bahwa tidak ada kesalahan dalam pengaturan. Jika tidak, loader tidak akan berfungsi. Misalnya tipe konten yang tidak ditentukan, tipe data untuk panggilan POST / PUT / DELETE / GET.sumber