AJAX XMLHttpRequest Object
Table of contents
XMLHttpRequest Basic
XMLHttpRequest Object
AJAX의 핵심
모든 최신 브라우저는 XMLHttpRequest
객체를 지원함
XMLHttpRequest
객체는 뒤에서 웹 서버와 데이터를 교환할 수 있어서 전체 페이지를 로드하지 않고도 웹 페이지의 일부를 업데이트 할 수 있음
Access Across Domains
보안상의 이유로 브라우저는 도메인간 엑세스를 허용하지 않기 때문에 엑세스 하려면 로드하려는 웹 페이지와 XML 파일이 모두 동일한 서버에 있어야 함
즉 AJAX를 사용하려면 XML 파일이 홈페이지와 동일한 자체 서버에 있어야함
Create an XMLHttpRequest Object
모든 최신 브라우저에는 내장 XMLHttpRequest
객체가 있음
XMLHttpRequest 객체 생성 구문
variable = new XMLHttpRequest();
ActiveX for Older Browsers
오래된 브라우저는 XMLHttpRequest
객체 대신 ActiveX
객체를 사용함
ActiveX 객체 생성 구문
variable = new ActiveXObject(“Microsoft.XMLHTTP”);
Create Object for All Browsers
따라서 모든 브라우저에서 XMLHttpRequest
객체를 이용하기 위해 아래 구문을 사용함
IE5,6까지 처리하는 코드
if (window.XMLHttpRequest) {
// code for modern browsers
xmlhttp = new XMLHttpRequest();
} else {
// code for old IE browsers
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
XMLHttpRequest Objext Methods
Method | Description |
---|---|
new XMLHttpRequest() | XMLHttpRequest 객체 생성 |
abort() | 현재 요청 취소 |
getAllResponseHeaders() | 헤더의 정보를 리턴 |
getResponseHeader() | 헤더의 특정한 정보를 리턴 |
open(method, url, async, user, psw) | 요청의 타입을 구체적으로 명시 |
method: the request type GET or POST | |
url: the file location | |
async: true (asynchronous) or false (synchronous) | |
user: optional user name | |
psw: optional password | |
psw: optional password | |
psw: optional password | |
send() | 서버에게 요청, Used for GET requests |
send(string) | 서버에게 요청, Used for POST requests |
setRequestHeader() | 헤더에게 보내져야 할 라벨/값 쌍을 더함 |
XMLHttpRequest Objext Properties
Property | Description |
---|---|
onreadystatechange | readyState 속성이 변할 때 호출될 함수를 정의하고 호출 |
readyState | XMLHttpRequest의 상태를 홀드 |
0: request not initialized | |
1: server connection established | |
2: request received | |
3: processing request | |
4: request finished and response is ready | |
status | XMLHttpRequest의 객체의 상태를 유지, 상태를 보유하고 메시지를 숫자로 리턴 |
200: “OK” | |
403: “Forbidden” | |
404: “Not Found” | |
더보기 | |
statusText | XMLHttpRequest의 객체의 상태를 보유, 상태 메시지를 텍스트로 리턴 |
responseText | 문자열로 response 데이터를 리턴 |
responseXML | XML data로 response 데이터를 리턴 |
→ onreadystatechange함수는 readyState가 변경 될 때마다 호출
예제
function loadDoc() {
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
document.getElementById("demo").innerHTML =
this.responseText;
}
};
xhttp.open("GET", "ajax_info.txt", true);
xhttp.send();
}
//onreadystatechange는 readyState가 4가 될때까지 4번 실행됨