✔️ Ajax는 웹에서 화면을 갱신하지 않고 데이터를 서버로부터 가져와 처리하는 방법을 의미.
✔️ JavaScript의 XMLHttpRequest(XHR) 객체로 데이터를 전달하고 비동기 방식으로 결과를 조회.
✔️ 화면 갱신이 없으므로 사용자 입장에서는 편리하지만, 동적으로 DOM을 구성해야 하므로 구현이 복잡.
✔️ 일반 요청에 대한 응답
✔️ Ajax 요청에 대한 응답
✔️ 웹 화면을 구성하는 방식은 SSR과 CSR로 구분
✔️ Ajax는 CSR 중심의 개발 방식이며 비동기 요청보다는 동적 화면 구성이 관건이다.
✔️ XMLHttpRequest 이용 방식(Browser)
<script>
var ajax = new XMLHttpRequest();
ajax.onreadystatechange = function(){
if(this.readyState == 4 && this.statue == 200){
console.log(ajax.responseText);
console.log(ajax.responseXML);
}
}
};
ajax.open("GET/POST","URL호출",true);
ajax.send();
</script>
✔️ fetch() 이용 방식(Browser)
<script>
fetch("URL 링크")
.then((response)=>{
if(!response.ok){
throw new Error("400 또는 500에러 발생");
}
return response.json();
})
.then((result)=>{
console.log(result);
})
.catch(()=>{
console.log("에러 발생!");
});
</script>
✔️ GET 방식의 특징
✔️ POST 방식의 특징
✔️ XMLHttpRequest는 자바스크립트가 Ajax 방식으로 통신할 때 사용하는 객체
✔️ XMLHttpRequest 객체는 Ajax 통신 시 전송방식, 경로, 서버로 전송할 data등 전송정보를 담는 역할
✔️ 실제 서버와의 통신은 브라우저의 Ajax 엔진에서 수행
✔️ status
✔️ fetch()
✔️ 사용법
let promise = fetch(url, [options]);
<script>
let response = await fetch(url);
if(response.ok){
let json = await response.json();
}else{
alert("에러 발생 : "+response.status);
}
</script>
✔️ 응답 본문(data)를 받는 방법
✔️ fetch() 사용 예.
<script>
window.onload = async function(){
let url = "https://jsonplaceholder.typicode.com/posts/1";
let response = await fetch(url);
console.log(response);
// ● async : function 앞에 asynce 를 붙이면 해당 함수는 항상 프라미스를 반환한다.
// 프라미스가 아닌 값을 반환하더라도 이행 상태의 프라미스로 값을 감싸 이행된 프라미스가 반환되도록 한다.
// ● await : 자바스크립트는 await 키워드를 만나면 프라미스가 처리될 때까지 기다린다.
// 결과는 그 이후 반환된다.
let data = await response.json();
console.log(data.userId);
};
</script>
❌ async와 await를 사용하지 않은 경우
⭕ async와 await를 사용한 경우
⇒ 데이터를 promise 타입으로 바꿔서 반환한다.
<script>
fetch("https://jsonplaceholder.typicode.com/posts/1")
.then((response)=>response.json())
.then((data)=>console.log(data.userId));
</script>
(결과)
<script>
let config = {
method : "POST",
headers : {
"Content-Type":"application/json"
},
body : JSON.stringify({
title : "안녕하세요",
body: "제 이름은 정예진이죵",
userId : 1
}),
};
fetch("https://jsonplaceholder.typicode.com/posts", config)
.then((response)=>response.json())
.then((data)=>console.log(data.userId));
</script>
✔️ Server와 Client는 주고 받을 data의 형식을 맞춰야 함
✔️ 대표적인 data의 형식은 CSV, XML, JSON등이 있다.
Ex) 20201111,김싸피,A,90
❓ JSON 특징
❓ JSON의 직렬화와 역직렬화