Ajax
기술노트
AJAX의 정의 및 필요성
AJAX란?
- Asynchronous JavaScript And XML의 약자
- 페이지 전체를 새로고침하지 않고, 웹 서버와 데이터를 주고받아
웹 페이지의 일부만 동적으로 갱신하는 기술
- 핵심 포인트:
- 자바스크립트와 브라우저 내장 객체(XMLHttpRequest, fetch) 활용
- 비동기(Async) 방식으로 동작
- 최근에는 XML 대신 JSON을 주로 사용
왜 필요한가?
- 사용자 경험(UX) 향상: 전체 페이지 새로고침 없이 빠르고 부드럽게 부분 업데이트
- 네트워크 효율성: 필요한 데이터만 서버에서 받아와 트래픽/리소스 절감
- 모던 웹 개발의 필수: SPA, 실시간 피드, 검색 자동완성 등 다양한 UI에 적용
AJAX 동작 흐름
- JS 코드에서 서버로 요청 전송
- 서버에서 데이터 응답
- JS에서 데이터 받아 화면 일부 동적 업데이트
fetch()를 활용한 외부 API 호출
fetch() 함수란?
- 최신 브라우저에 내장된 AJAX 비동기 통신 API
- 간결하고 Promise 기반(then 체이닝 지원)
- RESTful API, JSON 등 다양한 리소스 요청에 적합
기본 사용 예시
fetch('https://jsonplaceholder.typicode.com/posts/1')
.then(response => response.json())
.then(data => {
console.log(data);
document.getElementById('result').innerText = data.title;
})
.catch(error => console.error('Error:', error));
실습: fetch()로 외부 데이터 불러오기
- HTML
<button id="btn">글 제목 불러오기</button>
<div id="result"></div>
- JavaScript
document.getElementById('btn').addEventListener('click', () => {
fetch('https://jsonplaceholder.typicode.com/posts/1')
.then(res => res.json())
.then(data => {
document.getElementById('result').innerText = data.title;
});
});
- 설명: 버튼을 클릭하면, 서버에서 받아온 글 제목이 화면에 표시됩니다.
XMLHttpRequest를 이용한 AJAX GET 요청 예제
var xhr = new XMLHttpRequest();
// 1. 응답을 받았을 때 실행할 함수 지정 (콜백)
xhr.onload = function() {
// 여기에 응답 처리 코드 작성
alert("서버 응답: " + xhr.responseText);
};
// 2. 서버에 GET 방식으로 "/time" 경로를 비동기(true)로 요청
xhr.open("GET", "/time", true);
// 3. 실제 요청 전송
xhr.send();
코드 설명
- 1. XMLHttpRequest 객체 생성
new XMLHttpRequest()
로 ajax 통신에 사용할 객체를 만듭니다.
- 2. onload에 콜백 함수 등록
- 서버로부터 응답이 오면 자동으로 실행되는 함수입니다.
- 3. open() 메소드
- (HTTP Method, 요청 URL, 비동기 여부) 순서로 지정
true
를 주면 비동기로 동작
- 4. send() 호출
- 요청을 실제로 서버에 보냅니다.
참고
xhr.responseText
에 서버에서 받은 응답 데이터(문자열)가 저장됩니다.- 오류 처리를 위해
xhr.onerror
이벤트도 사용할 수 있습니다.
정리
- fetch()는 현대적 AJAX 방식의 표준
- 실시간 데이터 갱신, 검색, SPA 개발 등에 필수
- 실제 서비스에서 REST API 호출 패턴으로 자리잡음