본문 바로가기

Study/JavaScript

[JavaScript] 바닐라 JS로 AJAX 통신하기 예시

AJAX 통신을 할 때 jQuery가 사용하기 편리해서 자주 사용했으나 이번에 바닐라 JS로 어떻게 구현하는 지 궁금해서 대강 코드를 작성해보았다.

 

<!DOCTYPE html>
<html lang="ko">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <meta http-equiv="X-UA-Compatible" content="ie=edge" />
    <title>바닐라 JS로 AJAX 통신하기 예제</title>
  </head>
  <body>
    <button type="button" id="myButton">AJAX 통신 테스트하기</button>
  </body>
  <script>
    // 1. 버튼 DOM을 변수로 지정
    const myButton = document.getElementById("myButton");

    // 2. 버튼 클릭 시 이벤트 추가
    myButton.addEventListener("click", function () {
      // 3. XMLHttpRequest 생성
      let xhr = new XMLHttpRequest();

      // 4. 요청 보내기
      xhr.open("GET", "https://jsonplaceholder.typicode.com/todos/1", true);

      // 4-1. POST 요청일 경우 요청 HEADER를 설정한다.
      // xhr.setRequestHeader("Content-type", "application/json");

      // 5. 요청 전송
      xhr.send("id=get_ajax");

      // 6. 요청 후 작업
      xhr.onload = function () {
        // 7. 요청에 성공했을 때
        if (xhr.status == 200) {
          console.log(xhr.response);
          console.log("요청 성공");

          // 8. 요청에 실패했을 때
        } else {
          console.log("요청 실패");
        }
      };
    });
  </script>
</html>

 

버튼 하나를 두고 버튼을 클릭하면 AJAX 통신이 이루어지는 방식이다.

 

POST로 요청을 보낼 때는 헤더 설정이 반드시 필요하다. 4-1을 참조하면 된다.