Saya memiliki bentuk sederhana dengan remote = true.
Formulir ini sebenarnya ada di Dialog HTML, yang ditutup segera setelah tombol Kirim diklik.
Sekarang saya perlu membuat beberapa perubahan pada halaman HTML utama setelah formulir berhasil dikirim.
Saya mencoba ini menggunakan jQuery. Tapi ini tidak memastikan bahwa tugas dilakukan setelah beberapa bentuk respons dari pengiriman formulir.
$("#myform").submit(function(event) {
// do the task here ..
});
Bagaimana cara memasang callback, sehingga kode saya dijalankan hanya setelah formulir berhasil dikirim? Apakah ada cara untuk menambahkan beberapa panggilan balik .success atau .complete ke formulir?
Jawaban:
Saya baru saja melakukan ini -
Dan semuanya bekerja dengan sempurna.
Lihat dokumentasi api ini untuk detail yang lebih spesifik.
sumber
<form>
biasanya yang dikirimkan? (Maksud saya tidak dengan Ajax) Apa yang bisa saya masukkan dalam argumen pertama.bind()
? EDIT: yah, saya kiraclick
. Nvm, maaf. : pSaya tidak bisa mendapatkan solusi upvoted nomor satu untuk bekerja dengan andal, tetapi telah menemukan ini berfungsi. Tidak yakin apakah itu diperlukan atau tidak, tetapi saya tidak memiliki atribut tindakan atau metode pada tag, yang memastikan POST ditangani oleh fungsi $ .ajax dan memberi Anda opsi panggilan balik.
sumber
$(this).serialize()
garis. Ini memungkinkan Anda menggunakanjQuery.ajax()
untuk mengirimkan formulir yang ada di latar belakang, lalu menangkap balasan dari server dan melakukan sesuatu dengannya..serialize
tidak termasuk input file dalam permintaan POST Anda. Gunakan HTML5 FormData (lihat pertanyaan ini ) sebagai gantinya kecuali Anda mendukung browser lama seperti IE <9$(this).serialize()
, itu memecahkan masalah saya!Anda harus melakukan sesuatu secara manual dengan panggilan AJAX ke server. Ini akan meminta Anda untuk mengganti formulir juga.
Tapi jangan khawatir, ini sangat mudah. Berikut ikhtisar tentang bagaimana Anda akan bekerja dengan formulir Anda:
preventDefault
metode)Pertama, Anda harus membatalkan tindakan pengiriman formulir seperti ini:
Dan kemudian, ambil nilai datanya. Anggap saja Anda memiliki satu kotak teks.
Dan kemudian berikan permintaan. Anggap saja itu permintaan POST.
Dan ini harus melakukannya.
Catatan 2: Untuk mengurai data formulir, sebaiknya Anda menggunakan plugin . Ini akan membuat hidup Anda sangat mudah, serta memberikan semantik bagus yang meniru tindakan pengiriman formulir yang sebenarnya.
Catatan 2: Anda tidak harus menggunakan penunda. Itu hanya preferensi pribadi. Anda sama-sama dapat melakukan hal berikut, dan ini juga akan berhasil.
sumber
Untuk MVC di sini adalah pendekatan yang lebih mudah. Anda perlu menggunakan formulir Ajax dan mengatur AjaxOptions
di sini adalah kode pengiriman, ini ada di bagian siap dokumen dan mengikat acara onclick tombol untuk mengirimkan formulir
di sini adalah callback yang direferensikan di AjaxOptions
dalam metode pengontrol untuk MVC terlihat seperti ini
sumber
Saya tidak percaya ada fungsi panggilan balik seperti yang Anda gambarkan.
Yang normal di sini adalah melakukan perubahan menggunakan beberapa bahasa sisi server, seperti PHP.
Di PHP, Anda bisa misalnya mengambil bidang tersembunyi dari formulir Anda dan melakukan beberapa perubahan jika ada.
PHP:
Salah satu cara untuk melakukannya di Jquery adalah dengan menggunakan Ajax. Anda bisa mendengarkan submit, return false untuk membatalkan perilaku defaultnya dan sebagai gantinya menggunakan jQuery.post (). jQuery.post memiliki sukses-panggilan balik.
http://api.jquery.com/jQuery.post/
sumber
Penangan formulir "saat dikirim" dipanggil sebelum formulir dikirimkan. Saya tidak tahu apakah ada penangan yang akan dipanggil setelah formulir dikirimkan. Dalam pengertian tradisional non-Javascript, pengiriman formulir akan memuat ulang halaman.
sumber
sumber
ajaxForm()
komponen pihak ketiga telah Anda instal? Ini bukan bagian standar jQuery.