Penelusur internet masa depan:
Untuk browser baru (mulai 2018: Chrome, Firefox, Safari, Opera, Edge, dan sebagian besar browser seluler, tetapi bukan IE), fetch
adalah API standar yang menyederhanakan panggilan jaringan asinkron (yang dulu kami perlukan XMLHttpRequest
atau jQuery $.ajax
).
Ini adalah bentuk tradisionalnya:
<form id="myFormId" action="/api/process/form" method="post">
<!-- form fields here -->
<button type="submit">SubmitAction</button>
</form>
Jika formulir seperti di atas diserahkan kepada Anda (atau Anda membuatnya karena ini adalah html semantik), maka Anda dapat membungkus fetch
kode di event listener seperti di bawah ini:
document.forms['myFormId'].addEventListener('submit', (event) => {
event.preventDefault();
// TODO do something here to show user that form is being submitted
fetch(event.target.action, {
method: 'POST',
body: new URLSearchParams(new FormData(event.target)) // event.target is the form
}).then((resp) => {
return resp.json(); // or resp.text() or whatever the server sends
}).then((body) => {
// TODO handle body
}).catch((error) => {
// TODO handle error
});
});
(Atau, jika seperti poster asli Anda ingin memanggilnya secara manual tanpa event submit, cukup letakkan fetch
kode di sana dan teruskan referensi ke form
elemen daripada menggunakan event.target
.)
Dokumen:
Ambil:
https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API
Lainnya:
https://developer.mozilla.org/en-US/docs/Learn/HTML/Forms/Sending_forms_through_JavaScript
Halaman itu di tahun 2018 tidak menyebutkan pengambilan (belum). Tapi itu menyebutkan bahwa trik target = "myIFrame" tidak digunakan lagi. Dan itu juga memiliki contoh form.addEventListener untuk acara 'submit'.