Sekarang kita telah menyiapkan form bukannya di-submit dengan cara yang biasa, itu akan memicu fungsi submitForm () ketika pengunjung men-submit. Fungsi ini akan melakukan beberapa validasi dan, jika semuanya oke,maka akan mengirimkan data form ke skrip PHP melalui Ajax.
Berikut fungsi secara penuh:
// Submit the form via Ajax function submitForm() { var contactForm = $(this); // Are all the fields filled in? if ( !$('#senderName').val() || !$('#senderEmail').val() || !$('#message').val() ) { // No; display a warning message and return to the form $('#incompleteMessage').fadeIn().delay(messageDelay).fadeOut(); contactForm.fadeOut().delay(messageDelay).fadeIn(); } else { // Yes; submit the form to the PHP script via Ajax $('#sendingMessage').fadeIn(); contactForm.fadeOut(); $.ajax( { url: contactForm.attr( 'action' ) + "?ajax=true", type: contactForm.attr( 'method' ), data: contactForm.serialize(), success: submitFinished } ); } // Prevent the default form submission occurring return false; }
Berikut adalah fungsi kerjanya:
1. Simpan form kontak dalam variabel
Karena kita akan menggunakannya banyak seluruh fungsi, kita memulai dengan menyimpan kontak elemen bentuk dalam variabel ContactForm. Elemen ini tersedia untuk fungsi kita sebagai variabel, karena fungsi adalah event handler untuk menyerahkan kepada elemen. Kita bungkus elemen dalam objek jQuery untuk membuatnya bekerja.
2. Periksa semua field yang diisi
Sekarang kita periksa bahwa nilai masing-masing field yang tidak kosong dengan menggunakan metode jQueryval () pada setiap field.
3. Menampilkan peringatan jika field tidak selesai
Jika 1 atau lebih bidang kosong, kita memudar form, kemudian memudar di div #incompleteMessage, yang berisi " Please complete all the fields..." pesan. Kita terus pesan di sana untuk waktu yang ditentukan oleh variabel messageDelay, kemudian memudar keluar lagi. Setelah itu memudar keluar, kita memudar bentuk kembali sehingga pengunjung dapat menyelesaikannya.
4. Men-submit form jika sudah selesai
Sekarang kita sampai ke inti dari JavaScript. Jika form selesai maka kita akan memudarkan form, "Sending Your Message ..." kotak. Sekarang kita sebut metode jQuery ajax () untuk mengirimkan form melalui Ajax untuk script PHP.
url
URL untuk mengirim form. Kita ambil ini dari action atribut form, dan menambahkan parameter ajax = true untuk string sehingga script PHP tahu kalau form dikirim melalui Ajax.
type
Jenis request untuk membuat ("POST" atau "GET"). Kita ambil ini dari atribut form'smethod, yang dalam hal ini diatur ke "POST".
data
Data untuk mengirim request. Untuk ini, kita sebut jQuery serialize() metode pada objek form kontak. Metode ini mengambil semua nama dan nilai field dalam encode data dalam query string. Lalu saat string ini lulus dengan metode ajax () sehingga dapat mengirim data ke script PHP.
success
Ini adalah fungsi callback yang akan dipanggil sekali dari requestAjax dan browser telah menerima respon dari server. Kita atur ini untuk fungsi oursubmitFinished ()
5. Mencegah terjadi pen-submitan form default
Terakhir, event handler kita kembali ke false untuk mencegah form yang disubmit dengan cara yang biasa.
Fungsi terakhir yang akan kita tulis adalah submitFinished (), yang dipanggil sekali respon Ajax dari script PHP yang telah diterima oleh browser. Fungsi ini akan memeriksa respon dan menampilkan success atau pesan error yang sesuai:
// Handle the Ajax response function submitFinished( response ) { response = $.trim( response ); $('#sendingMessage').fadeOut(); if ( response == "success" ) { // Form submitted successfully: // 1. Display the success message // 2. Clear the form fields // 3. Fade the content back in $('#successMessage').fadeIn().delay(messageDelay).fadeOut(); $('#senderName').val( "" ); $('#senderEmail').val( "" ); $('#message').val( "" ); $('#content').delay(messageDelay+500).fadeTo( 'slow', 1 ); } else { // Form submission failed: Display the failure message, // then redisplay the form $('#failureMessage').fadeIn().delay(messageDelay).fadeOut(); $('#contactForm').delay(messageDelay+500).fadeIn(); } } </script>
Berikut penjelasan dari fungsi tersebut:
1. Dapatkan respon
jQuery melewati respon dari script PHP sebagai argumen untuk fungsi thesubmitFinished (). Kita mengambil string dan menyebarkannya melalui metode jQuery trim () untuk menghilangkan spasi apapun.
2. Fade out "Sending" pesan
Selanjutnya kita meblur keluar kotak "Mengirim pesan Anda ..." kotak dengan memanggil metode jQueryfadeOut ().
3. Jika email telah berhasil dikirim, menampilkan pesan sukses
Jika variabel respon memegang string success", seperti yang dikembalikan oleh skrip PHP, maka kita tahu bahwa email itu berhasil antri dikirim. Jadi kita memudar pesan sukses, tahan selama beberapa detik, kemudian memudar keluar (fade out). Kita juga me-reset kolom form untuk nilai yang kosong, dalam hal pengunjung ingin mengirim pesan lain. Terakhir, setelah pesan sukses telah memudar, kita tampilkan halaman konten kembali.
4. Jika ada masalah, menampilkan pesan gagal
Jika script PHP kembali selain "sukses" maka kita tahu ada masalah dengan sumbit, jadi kitatampilkan pesan error yang disimpan dalam div #failureMessage, lalu memudar bentuk kembali sehingga pengunjung dapat memperbaikierror pada form.
Kita sekarang telah membuat form kontak yang indah dan atraktif dengan . Tidak hanya terlihat bagus, tapi mudah digunakan, dan pengunjung dapat mengirim email tanpa harus meninggalkan halaman yang mereka baca.
Sampai disini dulu tutorial kita, sampai jumpa di tutorial selanjutnya, selamat mencoba, Let’s Coding Together J