- Published On
AJAX란 무엇인가?
AJAX란 무엇인가?
AJAX(Asynchronous JavaScript and XML)
는 비동기적 웹 애플리케이션을 만들기 위해 사용하는 기법입니다.
이는 웹 페이지 전체를 새로 고침하지 않고도 서버로부터 데이터를 받아오거나 보낼 수 있도록 도와주며, 이를 통해 사용자 경험을 대폭 향상시킬 수 있습니다.
AJAX의 작동 원리
AJAX는 다음과 같은 과정을 통해 작동합니다:
- 웹 페이지에서 JavaScript를 사용하여 XMLHttpRequest 객체를 생성합니다.
- 이 객체를 통해 서버에 비동기적으로 요청을 보냅니다.
- 서버에서 처리 후 응답을 보내면, JavaScript가 이를 받아서 웹 페이지에 동적으로 표시합니다.
XMLHttpRequest ?
XMLHttpRequest
객체는 웹 브라우저에서 서버로 비동기적으로 데이터를 전송하고 받을 수 있게 해주는 JavaScript 객체입니다.
이 객체를 사용하면 웹 페이지가 전체 페이지를 새로 고침하지 않고도 서버에 데이터를 요청하고 받을 수 있습니다.
다음과 같은 과정으로 작동합니다.
- 객체 생성: 먼저 XMLHttpRequest 객체의 인스턴스를 생성합니다.
- 요청 초기화: .open() 메서드를 사용하여 요청 유형(예: "GET", "POST"), URL, 그리고 비동기 여부를 설정합니다.
- 이벤트 핸들러 설정: 요청의 상태 변화를 감지하고 응답을 처리할 수 있는 이벤트 핸들러를 설정합니다.
onreadystatechange
가 가장 일반적인 이벤트 핸들러입니다. - 요청 전송: .send() 메서드를 사용하여 서버로 요청을 전송합니다. 이 메서드에는 요청과 함께 전송할 데이터를 인자로 전달할 수 있습니다.
- 응답 처리: 서버로부터 응답을 받으면, 이벤트 핸들러를 통해 응답을 처리합니다. 응답 데이터는 responseText 또는 responseXML 속성을 통해 접근할 수 있습니다.
예시: 간단한 AJAX 요청
index.jsjavascript
function loadData() {
// XMLHttpRequest 객체를 생성합니다.
var xhr = new XMLHttpRequest();
// onreadystatechange 이벤트 핸들러를 설정합니다. 요청의 상태가 변경될 때마다 호출됩니다.
xhr.onreadystatechange = function() {
// readyState가 4(요청이 완료되고 응답이 준비된 상태)이고,
// sataus 200. 즉, 요청이 성공적으로 완료되어 응답 데이터가 준비된 경우를 체크합니다.
if (xhr.readyState == 4 && xhr.status == 200) {
// 요청을 통해 받은 데이터(xhr.responseText)로 웹 페이지의 내용을 업데이트합니다.
// 여기서는 "content"라는 ID를 가진 HTML 요소의 내용을 응답받은 텍스트로 설정합니다.
document.getElementById("content").innerHTML = xhr.responseText;
}
};
// XMLHttpRequest 객체를 사용하여 비동기적("true"로 설정)으로
//'example.txt' 파일의 내용을 가져오기 위한 GET 요청을 초기화합니다.
xhr.open("GET", "example.txt", true);
// 초기화된 요청을 실제로 서버로 전송합니다. 이 단계에서 비로소 서버에 요청이 이루어지며,
// 응답은 onreadystatechange 이벤트 핸들러를 통해 처리됩니다.
xhr.send();
}
AJAX의 장점과 단점
AJAX 사용에는 다음과 같은 장점들이 있습니다:
- 페이지 새로 고침 없이 데이터를 불러올 수 있어 사용자 경험이 향상됩니다.
- 서버로부터 필요한 데이터만 받아와 트래픽을 줄일 수 있습니다.
하지만 몇 가지 단점도 존재합니다:
- 검색 엔진 최적화(SEO)에 부정적인 영향을 줄 수 있습니다.
- JavaScript가 비활성화된 상태에서는 작동하지 않습니다.
장점 | 단점 |
---|---|
페이지 새로 고침 없이 데이터 로드 가능 | SEO에 부정적 영향을 줄 수 있음 |
서버 트래픽 감소 | JavaScript 비활성화 시 작동 안함 |
실제 사용 예시
웹 애플리케이션에서 사용자가 정보를 입력하고 "제출" 버튼을 클릭하면, 전통적인 방식은 페이지 전체를 새로 고쳐야 합니다.
하지만 AJAX를 사용하면 서버에 데이터를 비동기적으로 보내고 결과를 동적으로 처리할 수 있습니다.
이는 예를 들어, 이메일을 보낼 때 주소록에서 사용자 이름을 자동으로 완성하는 기능 등에 활용될 수 있습니다.
ajax와 관련된 Library는 SWR
, React Query
가 있습니다.
연관된 포스트 구경가기
1. AJAX란 무엇인가?2. 자바스크립트의 ES6 주요 변경 사항3. 이벤트 위임(Event Delegation)4. 실행 컨텍스트(Execution Context)5. 자바스크립트의 new 연산자 동작 방식6. JavaScript의 연산자 비교7. 엄격 모드(Strict Mode)8. JavaScript의 프로토타입 (Prototype) 이해하기9. Javascript에서 URL 및 URLSearchParams 사용10. Fetch web API11. 타입스크립트 주요 타입 정리12. import vs require13. JavaScript의 비동기 처리14. HTML SVG태그 분석15. JavaScript의 this 바인딩 완벽 정리16. JavaScript 배열 메서드: reduce()와 sort() 분석17. JavaScript 배열 메서드와 고차 함수 총정리
간략히