Zukünftige Internet-Sucher:
Für neue Browser (ab 2018: Chrome, Firefox, Safari, Opera, Edge und die meisten mobilen Browser, jedoch nicht IE) fetch
ist eine Standard-API, die asynchrone Netzwerkaufrufe vereinfacht (für die wir früher XMLHttpRequest
oder jQuerys benötigt haben $.ajax
).
Hier ist eine traditionelle Form:
<form id="myFormId" action="/api/process/form" method="post">
<!-- form fields here -->
<button type="submit">SubmitAction</button>
</form>
Wenn Ihnen ein Formular wie das oben genannte übergeben wird (oder Sie es erstellt haben, weil es semantisches HTML ist), können Sie den fetch
Code wie folgt in einen Ereignis-Listener einschließen:
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
});
});
(Wenn Sie es wie das Originalposter manuell ohne Übermittlungsereignis aufrufen möchten, geben Sie einfach den fetch
Code dort ein und übergeben Sie einen Verweis auf das form
Element, anstatt es zu verwenden event.target
.)
Docs:
Abrufen:
https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API
Sonstiges:
https://developer.mozilla.org/en-US/docs/Learn/HTML/Forms/Sending_forms_through_JavaScript Auf
dieser Seite im Jahr 2018 wird Fetch (noch) nicht erwähnt. Es wird jedoch erwähnt, dass der Trick target = "myIFrame" veraltet ist. Außerdem gibt es ein Beispiel für form.addEventListener für das Ereignis 'submit'.