동기 통신 : 요청 결과(응답)를 받을 때까지 새로운 요청을 하지 않는 통신 방식

비동기 통신 : 요청 결과(응답)를 기다리지 않고 새로운 요청을 하는 통신 방식

<div class="wrap1">
<input type="button" value="XML요청1" id="btn_xml_request1">
<div id="xml_response1"></div>
</div>
<script>
document.getElementById('btn_xml_request1').addEventListener('click', function(){
// 1. XMLHttpRequest 객체 생성 (비동기 통신을 수행하는 객체)
var xhr = new XMLHttpRequest();
// 2. 요청 정보 생성
// 1) 형식 : xhr.open(RequestMethod, URL, Sync/Async);
// (1) RequestMethod : get 또는 post
// (2) URL : 요청 URL (서버 경로 작성)
// (3) Sync(동기) : false, Async(비동기) : true
xhr.open('get', 'book1.xml', true);
// 3. 요청
xhr.send();
// 4. 응답
// 1) xhr 객체의 readystatechange 이벤트 : 응답되었는지 확인하는 이벤트
// 2) xhr.readyState : 통신상태 (0: OPENED, 1: UNSEND, 2: HEADER_RECEIVE, 3: LOADING, 4: DONE)
// 3) xhr.status : 응답코드 (200: 성공, 4XX: 클라이언트 측 오류, 5XX: 서버 측 오류)
// 4) 응답 데이터 형식에 따른 속성(property)
// (1) XML : responseXML
// (2) JSON : responseText
xhr.addEventListener('readystatechange', function(){
if(xhr.readyState === 4){
if(xhr.status === 200){
var data = xhr.responseXML;
var str = '';
var title = data.getElementsByTagName('title');
var author = data.getElementsByTagName('author');
for(let i = 0; i < title.length; i++){
str += '<ul>'
str += '<li>' + title[i].textContent + '</li>';
str += '<li>' + author[i].textContent + '</li>';
str += '</ul>';
}
document.getElementById('xml_response1').innerHTML = str;
}
}
})
})
</script>
대충 흐름만 이해하고 강사님이 문법 자체는 안중요하다니까 걍 넘어가...
ajax 하다보면 바뀐대. 얘가 다 아우른다고 하는데