FormData JavaScript를 사용한 AJAX 폼 전송

FormData를 사용하면 폼의 모든 필드를 자동으로 서버로 전송할 수 있습니다. 어떻게 하는지 살펴보겠습니다.

다음과 같은 폼이 있고, 인풋에 name 속성이 부여되어 있다고 가정해 보겠습니다:

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

이 폼을 AJAX로 전송해 보겠습니다. 먼저 폼에 대한 참조를 변수에 가져옵니다:

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

이제 요청 본문의 데이터로 FormData 객체를 지정합니다. 그리고 객체 자체에 매개변수로 폼에 대한 참조를 전달합니다:

public/client.jsform.addEventListener('submit', function(event) {
  let promise = fetch('/handler/', {
    method: 'POST',
    body: new FormData(this) // 폼에 대한 참조 전달
  });
  
  event.preventDefault();
});

결과적으로 서버에서는 name 속성의 이름으로 인풋 값을 얻을 수 있습니다:

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

숫자를 입력하는 다섯 개의 인풋이 있는 폼이 주어져 있습니다. 이 폼을 POST 메서드로 서버에 전송하세요. 서버가 입력된 숫자의 산술 평균을 찾아 결과를 브라우저로 다시 전송하도록 하세요.