조현영님의 Node.js 교과서의 내용을 공부하여 정리한 내용입니다.
2.2.1 AJAX
AJAX(Asynchronous Javascript And XML)
는 비동기적 웹 서비스를 개발하기 위한 기법
- 이름에
XML
이 들어가 있지만 꼭XML
을 사용해야 하는 것은 아니다. 요즘에는JSON
을 많이 사용한다. - 쉽게 말해 페이지 이동 없이 서버에 요청을 보내고 응답을 받는 기술
- 요청과 응답은 4.1절에 설명되어 있다.
웹 사이트 중 페이지 전환 없이 새로운 데이터를 불러오는 사이트는 대부분
AJAX
기술을 사용하고 있다고 보면 된다.보통
AJAX
요청은 jQuery나axios
같은 라이브러리를 이용해서 보낸다.- 하지만 이 책은 프런트엔드 라이브러리의 사용을 최소화하고 있으므로
- -> 자바스크립트가 기본으로 제공하는 방식으로 요청을 보낸다.
- 프런트엔드에는 ES2015+ 코드를 사용할 수 없는 경우(IE)가 있으므로
-> ES5 문법을 사용함
기본 구조는 다음과 같다.
1 | var xhr = new XMLHttpRequest(); |
- 먼저 XMLHttpRequest 생성자로 xhr 객체를 생성
- xhr.open 메서드에 요청 메서드와 요청 주소를 넣고 xhr.send 메서드로 - 보내면 된다.
- xhr.onreadystatechange는 이벤트 리스너로 요청한 후 서버로부터 응답이 올 때 응답을 받을 수 있다.
- 응답 코드가 200번 대 숫자면 성공을 의미하므로 xhr.responseText에는 성공한 내용이 담겨 있을 것이고, 그렇지 않다면 에러 메시지가 담겨 있을 것이다.
현재 설정된 주소는 실제로 동작하는 주소이므로 콘솔에서 결과를 받을 수 있다.
onreadystatechange 대신 onload와 onerror로 성공과 실패를 구별해도 된다.
1 | var xhr = new XMLHttpRequest(); |
서버로 데이터를 같이 보내는 POST 요청의 경우
- JSON 데이터를 보낸다.
1 | var xhr = new XMLHttpRequest(); |
- 전체적인 구조는 비슷한데 xhr.send 메서드에 데이터를 넣어 보내는 것이 다르다.
- xhr.setRequestHeader 메서드로, 서버로 보내는 컨텐츠가 JSON 형식임을 알릴 수 있다.
- 현재 설정된 주소는 실제로 동작하는 주소라서 결과값을 받을 수 있다.
- POST 요청의 경우 에러가 발생하는데, 이 에러를 해결하는 방법은 10.7절에서 배울 예정