본문 바로가기

AJAX 기초: 비동기 웹 컨텐츠 로딩

에온르 2024. 4. 6.
반응형

AJAX(Asynchronous JavaScript and XML)는 웹 페이지가 서버와 비동기적으로 데이터를 교환하고 업데이트할 수 있게 하는 기술입니다. 이를 통해 페이지 전체를 새로고침하지 않고도 부분적인 업데이트가 가능합니다.

source : w3schools


AJAX의 핵심 개념

비동기 통신

  • AJAX는 웹 페이지가 백그라운드에서 서버와 데이터를 교환할 수 있도록 합니다.
  • 사용자의 경험을 방해하지 않고, 웹 페이지의 일부만을 업데이트할 수 있습니다.

XMLHttpRequest 객체

  • AJAX의 핵심은 XMLHttpRequest 객체입니다.
  • 이 객체를 사용하여 서버에 데이터를 요청하고 응답을 받을 수 있습니다.

기본 AJAX 요청

AJAX 요청 생성

자바스크립트에서 XMLHttpRequest 객체를 생성하여 서버에 요청을 보내는 기본적인 방법은 다음과 같습니다.

var xhr = new XMLHttpRequest();
xhr.open('GET', 'example.txt', true);
xhr.send();

이 코드는 서버에 'example.txt' 파일을 비동기적으로 요청합니다.

응답 처리

서버로부터 응답을 받으면, onreadystatechange 이벤트 핸들러를 사용하여 응답을 처리할 수 있습니다.

xhr.onreadystatechange = function() {
    if (xhr.readyState == 4 && xhr.status == 200) {
        console.log(xhr.responseText);
    }
};

이 코드는 서버의 응답이 성공적으로 도착했을 때 그 내용을 콘솔에 출력합니다.


고급 AJAX 사용법

AJAX를 사용하여 더 복잡한 상호작용과 데이터 처리를 수행하는 방법을 살펴보겠습니다.

JSON과 AJAX

  • 현대 웹 개발에서 JSON(JavaScript Object Notation)은 데이터 교환의 주요 형식입니다.
  • XMLHttpRequest를 사용하여 JSON 데이터를 요청하고 처리하는 방법을 알아봅시다.
var xhr = new XMLHttpRequest();
xhr.open('GET', 'data.json', true);
xhr.onreadystatechange = function() {
    if (xhr.readyState == 4 && xhr.status == 200) {
        var data = JSON.parse(xhr.responseText);
        console.log(data);
    }
};
xhr.send();

이 코드는 JSON 파일을 요청하고, 서버로부터 받은 응답을 JavaScript 객체로 변환합니다.

오류 처리

  • AJAX 요청 중 오류가 발생할 수 있습니다.
  • status 코드와 onerror 이벤트를 사용하여 이러한 오류를 적절히 처리하는 것이 중요합니다.
xhr.onerror = function() {
    console.error("Request failed");
};

이 코드는 요청 중에 오류가 발생했을 때 오류 메시지를 출력합니다.

비동기 처리와 프로미스

  • 최신 자바스크립트에서는 XMLHttpRequest 대신 fetch API와 프로미스(Promise)를 사용하여 비동기 요청을 더 쉽게 처리할 수 있습니다.
  • 프로미스는 비동기 작업의 완료 또는 실패를 나타내는 객체입니다.
fetch('data.json')
    .then(response => response.json())
    .then(data => console.log(data))
    .catch(error => console.error('Error:', error));

이 코드는 fetch API를 사용하여 JSON 데이터를 요청하고, 프로미스를 통해 응답을 처리합니다.


실습 예제1: 간단한 AJAX 요청

다음은 서버로부터 데이터를 요청하고, 그 결과를 웹 페이지에 표시하는 간단한 예제입니다.

HTML:

<button id="loadButton">Load Data</button>
<div id="content"></div>

<script>
    document.getElementById("loadButton").addEventListener("click", function() {
        var 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>

이 예제에서는 버튼을 클릭하면 'data.txt' 파일의 내용을 요청하고, 응답을 받아 웹 페이지에 표시합니다.


실습 예제2: AJAX로 데이터 불러오기와 업데이트

웹 페이지에서 실시간으로 데이터를 불러오고 업데이트하는 예제를 살펴보겠습니다.

HTML:

<div id="userData"></div>
<button id="loadUser">Load User Data</button>

<script>
    document.getElementById("loadUser").addEventListener("click", function() {
        fetch('user.json')
            .then(response => response.json())
            .then(data => {
                document.getElementById("userData").innerHTML = 
                    'Name: ' + data.name + '<br>' +
                    'Email: ' + data.email;
            })
            .catch(error => console.error('Error:', error));
    });
</script>

이 예제에서는 fetch API를 사용하여 'user.json'에서 사용자 데이터를 불러오고, 이를 웹 페이지에 표시합니다.


결론

AJAX는 웹 애플리케이션에 실시간 데이터 처리와 동적인 상호작용을 추가하는 데 있어 필수적인 기술입니다. XMLHttpRequest와 fetch API의 사용법을 이해하고, JSON 데이터 처리, 오류 처리 및 프로미스를 통한 비동기 처리를 적절히 활용하면, 사용자에게 더욱 효과적이고 부드러운 웹 경험을 제공할 수 있습니다.

반응형

댓글