반응형
AJAX (Asynchronous JavaScript and XML) 란?
에이잭스, 아작스 등등 여러 이름으로 불린다.
웹 애플리케이션에서 비동기적으로 서버와 데이터를 주고받을 수 있도록 도와주는 기술
전체 페이지를 새로 고치지 않고도 서버에서 데이터를 받아와서 웹 페이지의 일부분을 업데이트할 수 있다.
우선 좀 자세하게 들어가 보자면
AJAX의 구성요소
- XMLHttpRequest 객체: 이 객체를 사용하여 서버와 비동기적으로 데이터를 주고 받음.
- 서버: 데이터를 제공
- JavaScript: XMLHttpRequest 객체를 생성하고 조작하는 데 사용
- 데이터포맷: JSON, XML, HTML 등 다양한 형식의 데이터를 주고 받을 수 있음
동작 원리
- XMLHttpRequest 객체 생성
- 설정
- 전송
- 응답
이렇게 된다. 코드로 보면
var xhr = new XMLHttpRequest(); // 객체 생성
xhr.open('GET', 'https://url.com/data', true); // 요청 설정
//'GET'은 요청 방식, 'https://url.com/data'는 요청 URL, true는 비동기 여부
xhr.send(); // 전송
xhr.onreadystatechange = function() {
if (xhr.readyState === 4 && xhr.status === 200) {
// 요청이 완료되고 응답이 성공적일 때
var data = JSON.parse(xhr.responseText);
console.log(data);
// 데이터를 처리하는 로직
}
}; // 응답
xhr.readyState 의 속성
- 0: UNSENT - XMLHttpRequest 객체가 생성된 상태
- 1: OPENED - open 메소드가 호출된 상태
- 2: HEADERS_RECEIVED - send 메소드가 호출된 상태, 응답 헤더가 수신된 상태
- 3: LOADING - 응답 본문을 수신하는 중
- 4: DONE - 전체 응답이 완료된 상태
xhr.status 의 속성
- 200: OK - 요청 성공
- 404: Not Found - 요청한 자원을 찾을 수 없음
- 500: Internal Server Error - 서버 내부 오류
이게 기본 형태이고
jQuery를 사용하면 좀 더 보기 편하고 쓰기 편해진다.
$.ajax({
url: 'https://api.example.com/data',
type: 'GET',
dataType: 'json',
success: function(data) {
$('#dataContainer').html(data.content);
},
error: function(xhr, status, error) {
console.log('Error: ' + error);
}
});
이것이 가장 기본적인 구조이고
이것도 자세히 들어가 보자면
$.ajax({
url: 'https://api.example.com/data',
type: 'GET', // method:'GET' 도 가능
dataType: 'json', // 응답 데이터 타입(xml,html,text 등등 가능)
data: { key1: 'value1', key2: 'value2' },
async: true, // 비동기 요청 여부 default:true
cache: false, // 요청 url에 캐시 방지 변수 default:true
contentType: 'application/json',
timeout: 5000,
headers: {
'Authorization': 'Bearer token'
},
beforeSend: function(xhr) {
console.log('Before send'); // 전송 전 호출
},
success: function(data) {
console.log('Success:', data); // 성공 시 호출
},
error: function(xhr, status, error) { // 실패 시 호출
console.log('Error:', error);
},
complete: function(xhr, status) { // 성공 or 실패 후 호출
console.log('Request complete');
},
statusCode: { // 상태 코드에 대한 콜백 함수
404: function() {
console.log('Page not found');
},
500: function() {
console.log('Internal Server Error');
}
}
});
이렇듯 여러 속성이 있고 이거 외에도 엄청 다양한 속성이 있다.
많이 알 수록 사용방법도 다양해 질 것이다.
728x90
반응형
LIST
'Programming > JavaScript' 카테고리의 다른 글
JavaScript console API의 종류 (0) | 2024.08.30 |
---|---|
JavaScript 클립보드에 복사기능 구현 (1) | 2024.08.26 |
JavaScript 에서 중복 실행을 방지하는 방법 (27) | 2024.08.22 |
var - let - const 차이점과 사용법 (0) | 2024.08.20 |
자주쓰는 JavaScript 형변환 함수들 (0) | 2024.07.29 |