Futuri ricercatori in Internet:
Per i nuovi browser (dal 2018: Chrome, Firefox, Safari, Opera, Edge e la maggior parte dei browser mobili, ma non IE), fetch
è un'API standard che semplifica le chiamate di rete asincrone (per le quali avevamo bisogno XMLHttpRequest
o di jQuery $.ajax
).
Ecco una forma tradizionale:
<form id="myFormId" action="/api/process/form" method="post">
<!-- form fields here -->
<button type="submit">SubmitAction</button>
</form>
Se ti viene consegnato un modulo come il precedente (o l'hai creato perché è html semantico), puoi racchiudere il fetch
codice in un listener di eventi come di seguito:
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
});
});
(Oppure, se come il poster originale vuoi chiamarlo manualmente senza un evento di invio, inserisci il fetch
codice lì e passa un riferimento form
all'elemento invece di usarlo event.target
.)
Documenti:
Recupera:
https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API
Altro:
https://developer.mozilla.org/en-US/docs/Learn/HTML/Forms/Sending_forms_through_JavaScript
Quella pagina del 2018 non menziona il recupero (ancora). Ma menziona che il trucco target = "myIFrame" è deprecato. E ha anche un esempio di form.addEventListener per l'evento "submit".