Майбутні пошукачі Інтернету:
Для нових браузерів (станом на 2018 рік: Chrome, Firefox, Safari, Opera, Edge та більшість мобільних браузерів, але не IE) fetch
- це стандартний API, який спрощує асинхронні мережеві дзвінки (для яких ми звикли XMLHttpRequest
або jQuery's$.ajax
).
Ось традиційна форма:
<form id="myFormId" action="/api/process/form" method="post">
<!-- form fields here -->
<button type="submit">SubmitAction</button>
</form>
Якщо вам надіслана така форма, як описано вище (або ви створили її, оскільки це семантичний html), ви можете загорнути fetch
код у слухача подій, як показано нижче:
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
});
});
(Або, як оригінальний плакат, ви хочете викликати його вручну без події подання, просто покладіть його fetch
туди і передайте посилання на form
елемент, а не використовуючиevent.target
.)
Документи:
Вибір:
https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API
Інше:
https://developer.mozilla.org/en-US/docs/Learn/HTML/Forms/Sending_forms_through_JavaScript
Ця сторінка у 2018 році не згадує про отримання (поки). Але в ньому зазначається, що фокус target = "myIFrame" застарілий. І він також має приклад form.addEventListener для події "подати".