자바스크립트 AJAX와 서버 사이드 스크립트 연동

AJAX(Asynchronous JavaScript and XML)는 웹 페이지의 일부를 새로고침 없이 동적으로 업데이트하는 기술입니다. 이를 통해 사용자가 웹 페이지와 상호 작용하면 서버 사이드 스크립트를 호출하여 데이터를 가져오거나 업데이트할 수 있습니다. 자바스크립트와 서버 사이드 스크립트를 연동하여 AJAX를 구현하는 방법에 대해 알아보겠습니다.

AJAX 요청 전송하기

AJAX 요청을 전송하기 위해 XMLHttpRequest 객체를 사용합니다. 아래는 GET 방식으로 AJAX 요청을 전송하는 예시 코드입니다.

var xhr = new XMLHttpRequest();
xhr.open('GET', 'http://example.com/api/data', true);
xhr.onreadystatechange = function() {
  if (xhr.readyState === XMLHttpRequest.DONE && xhr.status === 200) {
    var response = JSON.parse(xhr.responseText);
    // 서버로부터 받은 데이터(response)를 처리하는 로직 작성
  }
};
xhr.send();

위 코드에서 xhr.open() 메서드를 통해 요청 방식(GET), 요청할 URL, 비동기 여부(true)를 설정합니다. 그리고 xhr.onreadystatechange 콜백 함수를 사용하여 서버로부터 응답을 받았을 때 처리할 로직을 작성합니다. 마지막으로 xhr.send() 메서드를 호출하여 요청을 전송합니다.

서버 사이드 스크립트와 연동하기

AJAX 요청을 받아 처리하는 서버 사이드 스크립트는 요청을 처리하고 필요한 데이터를 반환해야 합니다. 대부분의 경우 이는 웹 애플리케이션의 백엔드 코드에서 처리됩니다. 자바스크립트와 연동하여 AJAX 요청을 처리하는 간단한 예시 코드를 살펴보겠습니다.

// Node.js + Express 예시

// Express 애플리케이션 생성
var express = require('express');
var app = express();

// GET 요청에 대한 핸들러 등록
app.get('/api/data', function(req, res) {
  // 데이터 처리 로직 작성
  var data = { key: 'value' };
  
  // JSON 형식으로 데이터 반환
  res.json(data);
});

// 서버 시작
app.listen(3000, function() {
  console.log('서버가 3000번 포트에서 실행 중입니다.');
});

위 코드는 Node.js와 Express 프레임워크를 사용하여 간단한 서버를 구축하는 예시입니다. /api/data 경로로 들어오는 GET 요청에 대해 핸들러 함수를 등록하고, 필요한 데이터를 처리 후 JSON 형식으로 반환합니다.

AJAX 응답 처리하기

AJAX 요청의 응답은 xhr.onreadystatechange 콜백 함수 내에서 처리됩니다. 응답을 받았을 때 필요한 로직을 작성하여 서버로부터 받은 데이터를 활용할 수 있습니다.

xhr.onreadystatechange = function() {
  if (xhr.readyState === XMLHttpRequest.DONE && xhr.status === 200) {
    var response = JSON.parse(xhr.responseText);
    // 서버로부터 받은 데이터(response)를 처리하는 로직 작성
    console.log(response.key); // 'value' 출력
  }
};

위 코드에서 응답 상태 (xhr.readyState) 가 XMLHttpRequest.DONE 이고 상태 코드 (xhr.status) 가 200 이면 응답이 성공적으로 도착한 것입니다. 이후 xhr.responseText 속성을 통해 서버로부터 받은 응답 데이터에 접근할 수 있습니다.

마무리

이제 자바스크립트와 서버 사이드 스크립트를 연동하여 AJAX를 구현하는 방법에 대해 알아보았습니다. AJAX를 이용하면 웹 페이지의 동적 업데이트가 가능해지며, 사용자 인터랙션에 따라 서버와 통신하여 데이터를 가져오거나 업데이트할 수 있습니다. 이를 활용하여 웹 애플리케이션의 사용자 경험을 향상시킬 수 있습니다.