Ajax를 알기 전에 HTTP 통신에 대해 알아보자.
이를 한줄로 쉽게 요약하자면, 전체 새로고침이 아닌 일부만 로드하는 방법이다. 이는 비동기 처리이다.
1) 전체 로딩이 아닌 일부만 로딩
좀 더 깊게 들어가면 기본적으로 HTTP 프로토콜은 클라이언트쪽에서 Request를 보내고 서버쪽에서 Response를 받으면 이어졌던 연결이 끊기게 되어있다. 그래서 화면의 내용을 갱신하기 위해서는 다시 Request를 하고 Response를 하며 페이지 전체를 갱신하게 된다. 하지만 이렇게 할 경우, 엄청난 자원낭비와 시간 낭비를 초래한다.
따라서, AJAX는 페이지 전체가 아닌 일부분만 갱신할 수 있도록 XMLHttpRequest 객체를 통해 서버에 Request한다. 이 경우, JSON 이나 XML 형태로 필요한 데이터만 받아 갱신하기 때문에 그만큼의 자원과 시간을 아낄 수 있다.
2) 일부만 로딩하기 때문에 속도 향상
3) 코딩 양이 줄어든다.
4) 다양한 UI 구현이 가능하다.
1) Ajax의 장점
2) Ajax의 단점
IE5, IE6와 같은 옛 버전에서는 XMLHttpRequest가 아닌 ActiveXObject를 사용한다.
1) IE7이상, Chrome, Mozila Firefox, Safari, Opera
2) IE5, IE6
const xhr = new XMLHttpRequest();
xhr.onreadystatechange = function(){
if(xhr.readyState === xhr.DONE) {
if(xhr.status === 200){
console.log(xhr.response)
} else {
console.error('error')
}
}
}
xhr('GET', https://jsonplaceholder.typicode.com/todos/1');
xhr.send();
이렇게 XMMLRequest객체를 이용하여 비동기 방식을 처리하는 것은 너무 길고 복잡한 경우가 많다. 따라서 Fetch를 사용하여 더 간편하게 사용할 수 있다. 아래 내용에서 Fetch에 대해 알아보자.
fetch(url, option)
.then(res => res.text())
.then(text => console.log(text))
fetch('https://jsonplaceholder.typicode.com/todos/1')
.then(response => response.json())
.then(json => console.log(json))
Fetch 말고도 jQuery 라이브러리로 Ajax를 사용할 수 있다. 저같은 경우에는 작년까지만 해도 Ajax를 jQuery로 사용을 해서 이 방법이 제일 손에 익어있다.
jQuery를 사용하기 위해서는 cdn으로 jQuery를 추가하면 된다. jQuery 추가 방법은 이 글에서 다루지 않겠다.
$.ajax({
type: "POST",
url: url,
data : data,
success: function(result)
{
//성공시 실행할 코드
}
});
어떻게 사용했냐면
type: Request Type (GET or POST)
url : url주소
data : 보낼 데이터
success : 성공했을 때 실행할 코드
이렇게 사용을 했다
우리는 개발을 할 때 어떠한 프로그램을 연계하여 개발을 할 때가 있는데 A프로그램과 B프로그램이 있다고 하면 데이터를 보내거나 받아야하는 상황이 있다. 이때 데이터를 보낼 때 JSON 형태로 보낸다. 받을 때도 형태로 받는다.
네트워크를 통해 전송할 때 아주 유용하다.
1) JSON.parse(변환할 데이터)
2) JSON.stringfy(변환할 데이터)
const jsonData = {
"name", "홍길원",
"age", 30,
"city", "seoul"
}
const jsonStringify = JSON.stringify(jsonData)
console.log(jsonStringfy)
console.log(JSON.parse(jsonStringfy))
이렇게 JSON.stringify로 JSON객체로 변환한 값과 type을 보면 string 인 것을 확인할 수 있고,
JSON객체를 자바스크립트 객체로 변환한 것을 확인할 수 있다.