Saya memiliki fungsi jQuery ajax dan ingin mengirimkan seluruh formulir sebagai data posting. Kami terus memperbarui formulir sehingga membosankan untuk terus-menerus memperbarui input formulir yang harus dikirim dalam permintaan.
155
Jawaban:
Ada fungsi yang melakukan ini:
http://api.jquery.com/serialize/
sumber
person[0].firstName
person[0].lastName
person[1].firstName
person[1].lastName
<input name="person[1].lastName">
?serialize () bukan ide yang baik jika Anda ingin mengirim formulir dengan metode posting. Sebagai contoh jika Anda ingin mengirimkan file melalui ajax, itu tidak akan berfungsi.
Misalkan kita memiliki formulir dengan id ini: "myform".
solusi yang lebih baik adalah membuat FormData dan mengirimkannya:
sumber
var
, di tahun 2016!form.serialize()
tetapi tidak berhasil untuk mengunggah file.new FormData(this)
bekerja dengan baikSecara umum digunakan
serialize()
pada elemen form.Harap perhatikan bahwa beberapa opsi <seleksi> diserialisasi dengan kunci yang sama, mis
akan menghasilkan string kueri yang mencakup banyak kejadian dari parameter kueri yang sama:
yang mungkin bukan yang Anda inginkan di backend.
Saya menggunakan kode JS ini untuk mengurangi beberapa parameter menjadi kunci tunggal yang dipisah koma (tanpa malu disalin dari respons komentator di utas di tempat John Resig):
yang mengubah hal di atas menjadi:
Dalam kode JS Anda, Anda akan menyebutnya seperti ini:
Semoga itu bisa membantu.
sumber
Menggunakan
cerita bersambung ()
Serialkan formulir ke string kueri, yang bisa dikirim ke server dalam permintaan Ajax.
sumber
Opsi jQuery yang bagus untuk melakukan ini adalah melalui FormData . Metode ini juga cocok saat mengirim file melalui formulir!
Fungsi kirim Anda di jQuery akan terlihat seperti ini:
untuk menambahkan data ke formulir Anda, Anda bisa menggunakan input tersembunyi di formulir Anda, atau Anda menambahkannya dengan cepat:
sumber
url: $(this).attr('action'),
sebaliknyaAnda hanya perlu memposting data. dan Menggunakan parameter fungsi set jquery ajax. Berikut ini sebuah contoh.
sumber
Solusi lain tidak berhasil untuk saya. Mungkin DOCTYPE lama dalam proyek yang saya kerjakan mencegah opsi HTML5.
Solusi saya:
js:
sumber