Ajax는 자바스크립트를 사용하여 비동기적으로 서버와 통신하여 데이터를 교환할 수 있는 방식
을 의미한다.
브라우저에서 이러한 Ajax 요청을 하고 싶다면,XMLHttpRequest 객체
를 사용하면 된다.
XMLHttpRequest 객체를 생성
하고 open() 메서드
를 이용하여 서버에게 보낼 요청을 정의할 수 있다.// 서버에게 보낼 요청을 정의
const request = new XMLHttpRequest();
request.open(method, url);
send() 메서드
를 통해 서버에게 전달 할 수 있다.// 서버에게 전송
request.send();
open() 메서드
의 세번째 파라미터로 false를 주게되면 비동기 방식이 아닌 동기 방식으로 동작하게 된다.
요청시에 header를 설정하고 싶다면 setRequestHeader() 메서드 이용.
onreadystatechange이벤트
또는 load이벤트
를 사용하면 된다.XMLHttpRequest 객체에는 readyState 속성이 존재하는데 readyState가 0일 때는 open() 메서드 호출 전, 3일 때는 요청한 데이터를 처리중과 같은 객체의 현재상태를 추적할 수 있는데
onreadystatechange이벤트는 이러한 readyState 속성 값이 변화할 때마다 호출되기 때문에 서버로 부터 응답을 받을 때만 반응하고 싶다면 load이벤트를 사용하면 된다.
request.onload = function(e){
console.log(request.responseText);
}
responseText속성에는 서버로부터 받은 데이터가 존재
하는데
보통 최근에는 데이터 포맷으로 많이 사용하는 JSON 형식으로 저장되어 있기 때문에 객체로 변환하여 사용해야 한다.
서버와 데이터를 주고받을 때 데이터 포맷
으로 사용되는 대표적인 것들은 XML, JSON등이 존재한다.
하지만 보통 가독성과 용량, 특정언어에 종속되지 않는다는 장점 때문에 JSON 형식을 많이 사용
한다고 한다.
객체 형식 -> JSON 형식
JSON.stringify({title: 'title', body: 'body is ...'})
서버로부터 받은 데이터는 JSON 형식이기 때문에 객체로 변환하는 작업이 필요하다.
JSON 형식 -> 객체 형식
const text = request.responseText;
const obj = JSON.parse(text);
좀 더 편리하게 사용하고 싶다면 fetch나 axios를 이용하는 것이 좋다.