<?xml version="1.0" encoding="UTF-8"?>
<book>
<title>XML 입문</title>
<author>홍길동</author>
<year>2024</year>
<price>25000</price>
</book>
XML은 eXtensible Markup Language의 줄임말임
ajax에서 반드시 XML 형식으로 데이터를 주고받을 필요는 없고, JSON, HTML 등 다양한 형식 가능
<button id="loadData">데이터 불러오기</button>
document.getElementById('loadData').addEventListener('click', function() {
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function() {
if (xhr.readyState === 4 && xhr.status === 200) {
var data = JSON.parse(xhr.responseText);
document.getElementById('result').innerHTML =
'<p>이름: ' + data.name + '</p>' +
'<p>나이: ' + data.age + '</p>' +
'<p>직업: ' + data.job + '</p>';
}
};
xhr.open('GET', 'https://api.example.com/data', true);
xhr.send();
});
document.getElementById('loadData') 먼저 getElementById를 통해 해당 버튼 가지고와서.addEventListener('click', addEventLinstener('click')으로 클릭 액션 확인 후XMLHttpRequest()를 이용해 XML request 처리할 변수 생성xhr.onreadystatechange 이 부분을 통해 xhr에 변화가 생긴 후에 비동기적으로 처리할 것들을 뒤에 함수 형식으로 쓸 수 있음xhr.readyState === 4 : readyState는 XMLHttpRequest의 현재 상태를 나타내며, 값이 4일 때는 요청이 완료되었음을 의미함.xhr.status === 200 : HTTP 응답 상태를 나타내는 부분. 200이면 ok라는 것.요즘은 잘 안 쓰지만, jQuery라는 라이브러리를 활용해서 ajax에 붙여서 쓰면 가독성이 매우 좋아짐.
$.ajax({
url: 'https://api.example.com/data',
method: 'GET',
dataType: 'json',
success: function(data) {
$('#result').html('<p>이름: ' + data.name + '</p>' +
'<p>나이: ' + data.age + '</p>' +
'<p>직업: ' + data.job + '</p>');
},
error: function(xhr, status, error) {
console.error('Ajax 요청 실패:', error);
}
});
조금 더 현대적인(?) 방식으로는 fetchAPI 방식을 사용하는 것임.
fetch('https://api.example.com/data')
.then(response => {
if (!response.ok) {
throw new Error('네트워크 응답이 올바르지 않습니다');
}
return response.json();
})
.then(data => {
document.getElementById('result').innerHTML =
`<p>이름: ${data.name}</p>
<p>나이: ${data.age}</p>
<p>직업: ${data.job}</p>`;
})
.catch(error => {
console.error('Fetch 에러:', error);
});
async function fetchData() {
try {
const response = await fetch('https://api.example.com/data');
if (!response.ok) {
throw new Error('네트워크 응답이 올바르지 않습니다');
}
const data = await response.json();
document.getElementById('result').innerHTML =
`<p>이름: ${data.name}</p>
<p>나이: ${data.age}</p>
<p>직업: ${data.job}</p>`;
} catch (error) {
console.error('Fetch 에러:', error);
}
}
fetchData();
이 외에도 axios 등의 라이브러리가 있음...
출처 1: https://mundol-colynn.tistory.com/75
출처 2: https://www.elancer.co.kr/blog/view?seq=182
출처 3: https://www.w3schools.com/js/js_ajax_intro.asp
출처 4: https://developer.mozilla.org/ko/docs/Web/API/Fetch_API/Using_Fetch