Odesílání formuláře pomocí AJAX a FormData v JavaScriptu

Pomocí FormData lze automaticky odeslat všechna pole formuláře na server. Podívejme se, jak se to dělá.

Předpokládejme, že máme následující formulář, kde mají vstupní pole atributy name:

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

Pojďme tento formulář odeslat pomocí AJAX. Nejprve získáme odkaz na formulář do proměnné:

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

Nyní v těle požadavku jako data zadejme objekt FormData. A samotnému objektu předáme jako parametr odkaz na formulář:

public/client.jsform.addEventListener('submit', function(event) {
  let promise = fetch('/handler/', {
    method: 'POST',
    body: new FormData(this) // předáváme odkaz na formulář
  });
  
  event.preventDefault();
});

V důsledku toho budeme moci na serveru získat hodnoty vstupních polí podle jejich jmen z atributů name:

server.jsexport default {
  '/handler/': function({post}) {
    console.log(post.num1);
    console.log(post.num2);
    return 'data formuláře přijata';
  }
}
Задание 1

Je dán formulář s pěti vstupními poli, do kterých se zadávají čísla. Odešlete tento formulář na server metodou POST. Nechť server najde aritmetický průměr zadaných čísel a pošle výsledek zpět do prohlížeče.