AJAX
Asyncronous Javascript and XML | Javascript의 비동기 통신
클라이언트와 서버 간 데이터를 주고 받을 때 HTTP 통신을 사용한다.
그 중에서도 AJAX는 변경하고 싶은 부분(필요한 부분)만 서버에 비동기적으로 요청하여 특정 데이터(JSON, XML 형식)을 받아 부분적으로 화면을 갱신하게 해주는 기술이다.
XMLHttpRequest
XMLHttpRequest 객체를 이용한 Ajax의 구현
특징
Ajax 기술의 핵심적인 구성 요소로서 객체에서 제공하는 프로퍼티와 메서드 등을 이용해서 HTTP 통신을 가능하게 해준다.
구현 방법
const xhr = new XMLHttpRequest() // 객체 생성
xhr.open("GET", "https://jsonplaceholder.typicode.com/todos/1") // http 요청 초기화
xhr.setRequestHeader("content-type", "application/json") // http 요청 헤더 설정
xhr.send() // http 요청 전송
// HTTP 요청이 성공했을 경우 발생하는 이벤트 핸들러
xhr.onload = () => {
if (xhr.status === 200) {
console.log(JSON.parse(xhr.response))
} else {
console.error("Error", xhr.status, xhr.statusText)
}
}
장/단점
jQuery - $.ajax
jQuery 라이브러리에서 제공하는 API
특징
jQuery 라이브러리를 import 해서 사용해야 한다.
XMLHttpRequest 객체를 이용한 통신의 불편함, 호환성을 보완하여 등장했다.
콜백 함수를 이용하여 비동기 통신을 구현한다.
구현 방법
$.ajax({
url: "https://jsonplaceholder.typicode.com/todos/1", // 요청 서버 URL 주소
data: {}, // 서버로 보낼 데이터 (메서드에 따라 선택)
type: "GET", // HTTP 요청 메서드(GET, POST, PUT, DELETE ...)
dataType: "json", // 서버에서 보내줄 데이터의 타입
success: function onData(data) { // 서버 응답이 성공하였을 때 실행되는 함수
console.log(data)
},
error: function onError(error) { // 서버 응답이 실패하였을 때 실행되는 함수
console.error(error)
},
})
장/단점
fetch api
Promise 기반으로 만들어져 있다.ES6 부터 도입된 Javascript 내장 API
const post = (url, payload) => {
return fetch(url, {
method: 'POST',
headers: {'content-Type': 'application/json'},
body: JSON.stringify(payload)
})
}
const url = 'https://getmyinfo.com/posts/1'
post(url, { payload: 'payload' })
.then(res => console.log(res))
axios
Promise 기반으로 동작한다.node.js와 브라우저를 위한 HTTP 통신 라이브러리
axios({
method: 'post',
url: 'https://getmyinfo.com/posts/1',
data: { payload: 'payload' }
});
[참고 및 출처]
https://ghost4551.tistory.com/139
https://velog.io/@kysung95/%EA%B0%9C%EB%B0%9C%EC%83%81%EC%8B%9D-Ajax%EC%99%80-Axios-%EA%B7%B8%EB%A6%AC%EA%B3%A0-fetch#ajax
https://ko.javascript.info/fetch