{
"name": "Lee",
"age": 20,
"alive": true,
"hobby": ["traveling", "tennis"]
}
JSON.stringifyJSON.parseconst xhr = new XMLHttpRequest();
readyState - HTTP 요청의 현재 상태를 나타내는 정수, XMLHttpRequest의 정적 프로퍼티를 값으로 가짐status - HTTP 요청에 대한 응답 상태(HTTP 상태 코드)를 나타내는 정수 (ex. 200)statusText - HTTP 요청에 대한 응답 메시지를 나타내는 문자열 (ex. “OK”)responseType - HTTP 응답 타입 (ex. document, json, text, blob, arraybuffer)response - HTTP 요청에 대한 응답 몸체(response body), responseType에 따라 타입이 다름responseText - 서버가 전송한 HTTP 요청에 대한 응답 문자열onreadystatechange - readyState 프로퍼티 값이 변경된 경우onerror - HTTP 요청에 에러가 발생한 경우onload - HTTP 요청이 성공적으로 완료한 경우onloadstart, onprogress, onabort, ontimeout, onloadend 등open - HTTP 요청 초기화send - HTTP 요청 전송abort - 이미 전송된 HTTP 요청 중단setRequestHeader - 특정 HTTP 요청 헤더의 값 설정getResponseHeader - 특정 HTTP 요청 헤더의 값을 문자열로 반환UNSENT - 0 - open 메서드 호출 이전OPENED - 1 - open 메서드 호출 이후HEADERS_RECEIVED - 2 - send 메서드 호출 이후LOADING - 3 - 서버 응답 중 (응답 데이터 미완성 상태)DONE - 4 - 서버 응답 완료HTTP 요청을 전송하는 경우 다음 순서를 따른다.
XMLHttpRequest.prototype.openXMLHttpRequest.prototype.setRequestHeaderXMLHttpRequest.prototype.sendconst xhr = new XMLHttpRequest();
xhr.open('GET', '/users'); // 초기화
xhr.setRequestHeader('content-type', 'application/json'); // 헤더 설정
xhr.send(); // 전송
XMLHttpRequest.prototype.openxhr.open(method, url[, async])
XMLHttpRequest.prototype.sendxhr.send(JSON.stringify({ id: 1, content: 'HTML', completed: false }));
XMLHttpRequest.prototype.setRequestHeader*/*으로 전송됨readystatechange 이벤트readyState 프로퍼티 값이 변경된 경우 발생하는 이벤트const xhr = new XMLHttpRequest();
xhr.open('GET', '/users');
xhr.send();
xhr.onreadystatechange = () => {
// 만약 서버 응답이 아직 완료되지 않았다면 아무런 처리를 하지 않는다.
if (xhr.readyState !== XMLHttpRequest.DONE) return;
// 서버 응답 성공하면
if (xhr.status === 200) {
console.log(JSON.parse(xhr.response));
} else { // 실패하면 에러 처리
console.error('Error', xhr.status, xhr.statusText);
}
}
onload 이벤트XMLHttpRequest.DONE인지 확인할 필요 없음const xhr = new XMLHttpRequest();
xhr.open('GET', '/users');
xhr.send();
xhr.onload = () => {
// 서버 응답 성공하면
if (xhr.status === 200) {
console.log(JSON.parse(xhr.response));
} else { // 실패하면 에러 처리
console.error('Error', xhr.status, xhr.statusText);
}
}