티스토리 뷰

- Ajax

브라우저의 새로고침 없이 서버로부터 데이터를 얻어오는 방법

부스트코스 2-2에서도 잠깐 다뤘었으니 다시 보고 오자.

 

> 왜 비동기 통신이라 하는가?

페이지를 쭉 그리다가, 서버로부터 데이터를 추가로 요청하는 코드가 나오면 send() 로 요청을 보내놓고 나머지 작업을 수행한다.

function ajax(data) {
var oReq = new XMLHttpRequest();
oReq.addEventListener("load", function() {
console.log(this.responseText);
});
oReq.open("GET", "http://www.example.org/getData?data=data");
oReq.send();
}

addEventListener 안에 있는 function (익명 함수) 은 '이벤트 큐' 에 일단 담긴다.

그리고 아래의 open, send가 먼저 실행되고, 그 다음 서버로부터 Ajax 응답이 오면 이벤트 큐에 담겨있던 익명 함수가 실행되는 것이다.

 

> this.responseText는 문자열이다

JSON.parse() 라는 브라우저 함수를 사용해서 JSON Object로 변환해줄 수 있음.

var jsonobj = JSON.parse(this.reponseText);
var fruit = jsonobj.favorites[0];
var outside = document.querySelector(".outside");
outside.innerHTML += ("<span>" + fruit + "</span>");

 

- 크로스 도메인이란?

여기서 도메인이란 DNS (도메인 네임 서비스) 할 때의 그 도메인.

즉 '다른 도메인간의 통신' 을 크로스 도메인이라 하는데, 크로스 도메인간의 통신에서는 보안상의 이유로 Ajax를 쓸 수가 없다.

 

이때 쓰이는 기술이 JSONP (표준은 아니지만 널리 쓰임), CORS (표준).

AWS S3 다룰때 본 적 있는 CORS 설정이라는 게 이것.

 

- 크롬 개발자 도구를 이용한 디버깅

Network 탭으로 들어가면 받아온 JS, CSS 파일이나 Ajax 통신과 관련된 내용 등 다양한 내용을 확인할 수 있다.

'XHR' 탭으로 들어가면 Ajax 관련 내용을 확인 가능. 특히 시간측정 등에 유용하다.

 

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함