Saya memiliki formulir dengan nama orderproductForm
dan jumlah input yang tidak ditentukan.
Saya ingin melakukan semacam jQuery.get atau ajax atau sesuatu seperti itu yang akan memanggil halaman melalui Ajax, dan mengirimkan semua input formulir orderproductForm
.
Saya kira satu cara adalah melakukan sesuatu seperti
jQuery.get("myurl",
{action : document.orderproductForm.action.value,
cartproductid : document.orderproductForm.cartproductid.value,
productid : document.orderproductForm.productid.value,
...
Namun saya tidak tahu persis semua form input. Apakah ada fitur, fungsi atau sesuatu yang hanya akan mengirim SEMUA input formulir?
.ajaxSubmit()
/.ajaxForm()
bukan fungsi inti jQuery - Anda memerlukan Plugin Form jQueryIni adalah referensi sederhana:
Saya harap ini membantu Anda.
sumber
type: $(this).attr('method')
jika Anda menggunakanmethod
atribut pada formulir Anda.Solusi serupa lainnya menggunakan atribut yang didefinisikan pada elemen bentuk:
sumber
get
masing-masing default ke dan URL saat ini. Bisa dilakukan dengan menambahkan asumsi ini ke kode.Ada beberapa hal yang perlu Anda ingat.
1. Ada beberapa cara untuk mengirimkan formulir
Karena itu kita harus mengikat acara ajukan formulir , bukan acara klik tombol. Ini akan memastikan kode kami berfungsi pada semua perangkat dan teknologi bantu sekarang dan di masa depan.
2. Hijax
Pengguna mungkin tidak mengaktifkan JavaScript. Sebuah Hijax pola baik di sini, di mana kita lembut mengambil kendali dari bentuk menggunakan JavaScript, tapi biarkan submittable jika JavaScript gagal.
Kita harus menarik URL dan metode dari formulir, jadi jika HTML berubah, kita tidak perlu memperbarui JavaScript.
3. JavaScript yang tidak mengganggu
Menggunakan event.preventDefault () alih-alih mengembalikan false adalah praktik yang baik karena memungkinkan acara untuk muncul. Ini memungkinkan skrip lain mengikat ke dalam acara tersebut, misalnya skrip analitik yang mungkin memantau interaksi pengguna.
Kecepatan
Kita sebaiknya menggunakan skrip eksternal, daripada memasukkan skrip inline kami. Kami dapat menautkan ini di bagian kepala halaman menggunakan tag skrip, atau menautkannya di bagian bawah halaman untuk kecepatan. Script harus secara diam-diam meningkatkan pengalaman pengguna, tidak menghalangi.
Kode
Dengan asumsi Anda setuju dengan semua hal di atas, dan Anda ingin menangkap acara pengiriman, dan menanganinya melalui AJAX (pola hijax), Anda dapat melakukan sesuatu seperti ini:
Anda dapat secara manual memicu pengiriman formulir kapan pun Anda suka melalui JavaScript menggunakan sesuatu seperti:
Edit:
Baru-baru ini saya harus melakukan ini dan akhirnya menulis sebuah plugin.
Tambahkan atribut data-autosubmit ke tag formulir Anda dan kemudian Anda bisa melakukan ini:
HTML
JS
sumber
Anda juga dapat menggunakan FormData (Tapi tidak tersedia di IE):
Ini adalah bagaimana Anda menggunakan FormData .
sumber
Versi sederhana (tidak mengirim gambar)
Salin dan tempel ajaxifikasi formulir atau semua formulir pada halaman
Ini adalah versi modifikasi dari jawaban Alfrekjv
JavaScript
Saya ingin mengedit jawaban Alfrekjv tetapi terlalu menyimpang darinya sehingga memutuskan untuk memposting ini sebagai jawaban yang terpisah.
Tidak mengirim file, tidak mendukung tombol, misalnya mengklik tombol (termasuk tombol kirim) mengirimkan nilainya sebagai data formulir, tetapi karena ini adalah permintaan ajax klik tombol tidak akan dikirim.
Untuk mendukung tombol, Anda dapat menangkap klik tombol yang sebenarnya daripada mengirimkan.
Di sisi server Anda dapat mendeteksi permintaan ajax dengan header ini yang ditetapkan jquery
HTTP_X_REQUESTED_WITH
untuk phpPHP
sumber
Kode ini berfungsi bahkan dengan input file
sumber
Array.from(new FormData(form))
iterates atas iterator formd ini :)Saya sangat menyukai jawaban ini oleh superluminary dan terutama cara dia membungkus adalah solusi dalam plugin jQuery . Jadi terima kasih kepada superluminary untuk jawaban yang sangat berguna. Dalam kasus saya, saya ingin plugin yang memungkinkan saya untuk menentukan keberhasilan dan kesalahan event handler melalui opsi ketika plugin diinisialisasi.
Jadi inilah yang saya pikirkan:
Plugin ini memungkinkan saya untuk dengan mudah "ajaxify" formulir html pada halaman dan memberikan onsubmit , penangan event sukses dan kesalahan untuk menerapkan umpan balik kepada pengguna dari status mengirimkan formulir. Ini memungkinkan plugin untuk digunakan sebagai berikut:
Perhatikan bahwa penangan event sukses dan kesalahan menerima argumen yang sama yang akan Anda terima dari peristiwa yang sesuai dari metode ajax jQuery .
sumber
Saya mendapatkan yang berikut untuk saya:
dimana
Ini mengasumsikan posting ke 'url' mengembalikan ajax dalam bentuk
{success: false, error:'my Error to display'}
Anda dapat memvariasikan ini sesuai keinginan Anda. Jangan ragu untuk menggunakan cuplikan itu.
sumber
target
disini? Mengapa Anda mengirim formulir dengan AJAX, hanya untuk mengalihkan ke halaman baru?jQuery AJAX mengirimkan formulir , tidak lain adalah mengirimkan formulir menggunakan ID formulir ketika Anda mengklik tombol
Ikuti langkah-langkahnya
Langkah 1 - Tag formulir harus memiliki bidang ID
Tombol yang akan Anda klik
Langkah 2 - ajukan acara ada di jQuery yang membantu mengirimkan formulir. dalam kode di bawah ini kami sedang mempersiapkan permintaan JSON dari nama elemen HTML .
untuk demo langsung klik tautan di bawah ini
Bagaimana cara mengirimkan Formulir menggunakan jQuery AJAX?
sumber
pertimbangkan untuk menggunakan
closest
sumber
Saya tahu ini adalah
jQuery
pertanyaan terkait, tetapi sekarang dengan JS ES6 hal-hal jauh lebih mudah. Karena tidak adajavascript
jawaban murni , saya pikir saya bisa menambahkanjavascript
solusi murni sederhana untuk ini, yang menurut saya jauh lebih bersih, dengan menggunakanfetch()
API. Ini cara modern untuk mengimplementasikan permintaan jaringan. Dalam kasus Anda, karena Anda sudah memiliki elemen formulir, kami cukup menggunakannya untuk membangun permintaan kami.sumber
Untuk menghindari beberapa formdata mengirim:
Jangan lupa batalkan ajukan acara, sebelum formulir dikirimkan lagi, Pengguna dapat memanggil fungsi sumbit lebih dari satu kali, mungkin ia lupa sesuatu, atau kesalahan validasi.
sumber
Jika Anda menggunakan form .serialize () - Anda perlu memberi setiap elemen form nama seperti ini:
Dan formulir akan serial seperti ini:
sumber
Anda dapat menggunakan ini pada fungsi kirim seperti di bawah ini.
Formulir HTML
Fungsi jQuery:
Untuk detail lebih lanjut dan contoh Kunjungi: http://www.spiderscode.com/simple-ajax-contact-form/
sumber
Ini bukan jawaban untuk pertanyaan OP,
tetapi jika Anda tidak dapat menggunakan DOM bentuk statis, Anda juga dapat mencoba seperti ini.
sumber
Mencoba
Tampilkan cuplikan kode
sumber
Hanya pengingat ramah yang
data
bisa menjadi objek juga:sumber
JavaScript
HTML
sumber
Ada juga acara kirim, yang dapat dipicu seperti $ ini ("# form_id") .mohon (). Anda akan menggunakan metode ini jika form sudah terwakili dengan baik dalam HTML. Anda baru saja membaca di halaman, mengisi input formulir dengan hal-hal, lalu panggil .submit (). Ini akan menggunakan metode dan tindakan yang didefinisikan dalam deklarasi formulir, jadi Anda tidak perlu menyalinnya ke javascript Anda.
contoh
sumber