Lomakkeen lähetys AJAX:lla käyttäen FormDataa JavaScriptissä

FormData:n avulla voidaan lähettää automaattisesti kaikki lomakkeen kentät palvelimelle. Katsotaan kuinka tämä tehdään.

Oletetaan, että meillä on seuraava lomake, jossa syöttökentille on annettu name-attribuutit:

public/index.html<form action="" method="GET">
  <input name="num1">
  <input name="num2">
  <input type="submit">
</form>

Lähetetään tämä lomake AJAX:in kautta. Aluksi haetaan viite lomakkeeseen muuttujaan:

public/client.jslet form = document.querySelector('form');

Nyt määritellään pyynnön rungoksi datana FormData-olio. Ja annetaan itse oliolle parametrina viite lomakkeeseen:

public/client.jsform.addEventListener('submit', function(event) {
  let promise = fetch('/handler/', {
    method: 'POST',
    body: new FormData(this) // välitetään viite lomakkeeseen
  });
  
  event.preventDefault();
});

Tuloksena palvelimella voimme saada syöttökenttien arvot niiden nimien perusteella name-attribuuteista:

server.jsexport default {
  '/handler/': function({post}) {
    console.log(post.num1);
    console.log(post.num2);
    return 'lomakedata vastaanotettu';
  }
}
Задание 1

Annettu lomake, jossa on viisi syöttökenttää, joihin syötetään numeroita. Lähetä tämä lomake palvelimelle POST-metodilla. Olkoon palvelimen löydettävä syötettyjen numeroiden aritmeettinen keskiarvo ja lähetettävä tulos takaisin selaimelle.