
AJAX는 웹 페이지에서 동적으로 데이터를 주고받아, 전체 페이지를 다시 로드하지 않고도 웹 페이지의 일부분을 업데이트할 수 있게 해주는 기술이다. 즉, 사용자가 웹 페이지에서 특정 동작을 할 때, 전체 페이지가 새로고침되지 않고도 필요한 데이터를 서버에서 가져와서 화면에 반영할 수 있게 해준다.
| 장점 | 단점 |
|---|---|
| 사용자 경험 향상: 전체 페이지를 다시 로드하지 않아도 되어 빠르고 부드러운 사용자 경험을 제공 | 복잡성 증가: 동기식 요청보다 코드가 복잡해질 수 있다. |
| 네트워크 사용 효율성: 필요한 데이터만 주고받아 네트워크 자원을 절약 | SEO 어려움: 검색 엔진은 일반적으로 AJAX로 동적으로 로드된 콘텐츠를 쉽게 인덱싱하지 못함. |
| 서버 부하 감소: 페이지 전체가 아닌 일부만 업데이트하여 서버 부하를 줄일 수 있음 | 브라우저 호환성: 일부 오래된 브라우저에서는 AJAX 지원이 제한적일 수 있다. |
| 실시간 데이터 처리 가능: 실시간으로 서버와 데이터를 주고받아 동적인 페이지 구현 가능 | 디버깅 어려움: 비동기 특성으로 인해 디버깅이 까다로울 수 있다. |
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>AJAX Example</title>
<script>
function loadData() {
const xhr = new XMLHttpRequest();
xhr.open("GET", "data.txt", true);
xhr.onreadystatechange = function() {
if (xhr.readyState === 4 && xhr.status === 200) {
document.getElementById("content").innerHTML = xhr.responseText;
}
};
xhr.send();
}
</script>
</head>
<body>
<button onclick="loadData()">Load Data</button>
<div id="content">Here will be the loaded data.</div>
</body>
</html>
<script>
function loadData() {
const xhr = new XMLHttpRequest();
xhr.open("GET", "data.txt", true);
xhr.onreadystatechange = function() {
if (xhr.readyState === 4 && xhr.status === 200) {
document.getElementById("content").innerHTML = xhr.responseText;
}
};
xhr.send();
}
</script>
const xhr = new XMLHttpRequest();
xhr.open("GET", "data.txt", true);
xhr.onreadystatechange = function() {
if (xhr.readyState === 4 && xhr.status === 200) {
document.getElementById("content").innerHTML = xhr.responseText;
}
};
코드는 GPT에게 예제를 만들어달라고 부탁해서 가져온 것이다.

해당 코드에 대한 이미지인데 깨진 글은 대충 넘기고 감각적으로 어떤 느낌인지만 보면 될 것 같다.
아무튼 AJAX는 사용자가 웹 페이지에서 경험하는 인터랙션을 크게 개선할 수 있는 중요한 기술이다. 하지만 이를 구현할 때는 비동기 작업의 특성과 복잡성을 고려하여 신중하게 설계해야 한다. 아까의 단점을 참고하면 된다.