XMLHttpRequest는 자바스크립트에서 서버와 통신을 할 때 사용되는 객체입니다. 이 객체를 사용하여 비동기적으로 서버로부터 데이터를 가져올 수 있습니다. 그러나 XMLHttpRequest의 가장 강력한 기능은 이벤트 처리입니다.
이벤트 처리는 XMLHttpRequest 객체가 발생하는 다양한 상황에 대응하기 위해 사용됩니다. 예를 들어, 서버로부터 응답을 받았을 때 데이터를 처리하거나, 통신이 실패했을 때 에러를 처리하는 등의 작업을 할 수 있습니다. 이를 통해 사용자 경험을 개선하고 예외 상황을 대응할 수 있습니다.
이벤트 처리하기
XMLHttpRequest 객체의 이벤트 처리는 onreadystatechange
속성을 사용하여 정의할 수 있습니다. 이 속성은 서버로부터 응답을 받았을 때 호출되는 콜백 함수를 지정하는데 사용됩니다.
아래는 XMLHttpRequest 객체의 이벤트 처리를 예시로 보여주는 코드입니다.
const xhr = new XMLHttpRequest();
xhr.onreadystatechange = function() {
if (xhr.readyState === XMLHttpRequest.DONE) {
if (xhr.status === 200) {
// 서버 응답이 성공적으로 받아졌을 때 처리할 코드
} else {
// 서버 응답이 실패하거나 에러가 발생했을 때 처리할 코드
}
}
};
xhr.open('GET', 'http://example.com/api/data');
xhr.send();
위 코드에서 onreadystatechange
속성에 할당된 콜백 함수는 XMLHttpRequest 객체의 상태 변화를 감지하고, 상태가 XMLHttpRequest.DONE
상태일 때 응답을 처리합니다. 응답이 성공적으로 받아졌을 때 xhr.status === 200
조건문이 실행되며, 응답이 실패하거나 에러가 발생했을 때는 이에 대응하는 코드를 실행합니다.
다른 XMLHttpRequest 이벤트
이외에도 XMLHttpRequest 객체는 다양한 이벤트를 제공합니다. 일부를 소개하면 다음과 같습니다.
onload
: 서버 응답이 완전히 받아지고 처리될 때 호출됩니다.onerror
: 통신 도중 에러가 발생했을 때 호출됩니다.ontimeout
: 통신 시간이 초과되었을 때 호출됩니다.onprogress
: 통신 중 데이터를 전송하거나 받을 때 호출됩니다.
앞서 언급한 onreadystatechange
외에도 필요한 이벤트에 대응하여 콜백 함수를 정의할 수 있습니다.
결론
XMLHttpRequest를 사용하여 서버와 통신할 때 이벤트 처리는 매우 유용한 도구입니다. 이를 통해 서버 응답을 처리하고, 예외 상황을 대비하는 등의 작업을 수행할 수 있습니다. 업데이트된 자바스크립트에서는 Fetch API와 같은 대안이 있지만, 여전히 많은 프로젝트에서 XMLHttpRequest를 사용하고 있기 때문에 이벤트 처리에 대한 이해는 중요합니다.
참고로, 이 블로그 포스트는 XMLHttpRequset 객체의 이벤트 처리 방법을 설명하는 것에 초점을 맞추고 있습니다. 실제 프로젝트에 적용할 때는 더 많은 오류 처리 및 보완 조치를 고려해야 합니다.