2015. 5. 14. 00:06ㆍplming/jQuery
Ajax(Asynchronous JavaScript and XML)
페이지를 다시 로드할 필요 없이 서버와 비동기 요청을 만드는 기법
XMLHttpRequest (XHR) 객체로 구현
* XHR 인스터스 생성하기
var xhr;
if( window.XMLHttpRequest ) { ← XHR이 정의되었는지 검사
xhr = new XMLHttpRequest();
}
else if( window.ActiveXObject ) { ← ActiveX를 제공하는 검사, IE
xhr = new ActiveXObject("Msxml2.XMLHTTP");
}
else {
throw new Error("Ajax 지원 안하는 가봐요");
}
* XHR 메서드와 프로퍼티
메서드 |
설명 |
abort() |
현재 실행하는 요청을 취소 |
getAllResponseHeaders() |
응답 헤더의 모든 이름과 값을 포함하는 문자열을 반환 |
getResponseHeader(name) |
응답 헤더에서 name에 해당하는 값을 반환 |
open(method, url, async, username, password) |
요청 메서드와 호출할 URL을 설정. 선택적으로 요청은 동기 방식으로 선언할 수 있으며, 컨테이너 기반 인증이 필요하면 사용자명과 암호를 제공 |
send(content) |
요청을 선택사항인 본문 콘텐츠와 함께 전송 |
setRequestHeader(name,value) |
name에 해당하는 요청 헤더에 value를 설정 |
프로퍼티 |
설명 |
onreadystatechange |
요청의 상태가 변경될 때 사용하는 이벤트 핸들러를 할당 |
readyState |
요청의 상태를 나타내는 정수 값 0 - 초기화 되지 않은 상태 (Uninitialized) 1 - 로드되지 않은 상태(Loading) send() 메서드가 호출되지 않은 상태 2 - 로드된 상태(Loaded) 헤더와 상태는 받았지만, 응답은 받지 못한 상태 3 - 상호작용 상태(Interactive) 데이터의 일부만 받은 상태 4 - 완료상태(Complete) 모든 데이터를 받아서 완료된 상태 |
responseText |
응답에 반환된 본문 콘텐츠 |
responseXML |
본문 콘텐츠가 XML이라면, 본문 콘텐츠에서 XML DOM을 생성 |
status |
서버에서 반환한 응답상태코드. 성공은 200, 찾을 수 없음은 404 등 |
statusText |
응답으로 반환된 상태 메시지 |
* 요청 보내기
XHR의 open() 메서드를 호출
xhr.open( 'GET', '/some/resource/url', Boolean값 );
요청을 서버로 전송하지 않는다.
URL과 HTTP메서드를 설정하는 데 사용
Boolean값이 true이거나 생략하면 비동기 호출, false면 동기 호출
GET요청은
xhr.send(null);
POST요청은
send() 메서드에 전달된 문자열은 반드시 이름과 값이 올바르게 URL로 인코딩된 쿼리 문자열 형태여야
xhr.send( 'a=1&b=2&c=3' );
* 진행 상태 확인하기
xhr.onreadystatechange = function() {
if (xhr.readyState == 4) { ← 완료상태
if (xhr.status >= 200 && xhr.status < 300) { ← 성공상태
document.getElementById('someContainer').innerHTML = xhr.responseText;
}
}
}
* 응답 얻기
Ajax 요청의 응답은 일반텍스트, HTML, JSON(JavaScript Object Notation)형태의 자바스크립트 객체나 배열일 수 있다.
응답의 본문은 .responseText 프로퍼티를 사용
MIME타입이 'text/xml'등의 XML형태는 .responseXML 프로퍼티를 사용
'plming > jQuery' 카테고리의 다른 글
Ajax - GET/POST 요청 만들기 (0) | 2015.05.15 |
---|---|
Ajax - 엘리먼트에 콘텐츠 로드하기 (0) | 2015.05.14 |
동적으로 스크립트 로드하기 (0) | 2015.05.13 |
자바스크립트 객체와 컬렉션 조작하기 (0) | 2015.05.08 |
다른 라이브러리와 jQuery 사용하기 (0) | 2015.05.07 |