XMLHttpRequest란?
Ajax로 실행되는 HTTP 통신은 XMLHttpRequest 규격을 이용하고 있다.
이렇다할 표준은 아니지만 기본 통신 으로 가장 많이 사용되고 있다.
XMLHttpRequest를 지원하는 브라우저
Microsoft Internet Explorer 4.0이후 |
Mozilla Firefox 1.0 이후 |
Netscape 7 이후 |
Opera 7.6이후 |
Safari 1.2 이후 |
Konqueror 3 이후 |
Ajax의 핵심인 XMLHttpRequest에 의한 송수신 흐름
사용자쪽에서 진행
1. XMLHttpRequest 오브젝트 작성
new XMLHttpRequest()
new ActiveXObject("Microsoft.XMLHTTP")
new ActiveObject("MSXML2.XMLHTTP")
2. HTTP요청 발생
open() 메소드
(POST, GET, 요청하는 url, 동기/ 비동기 지정)
send()메소드
(데이터송신)
서버측에서 진행
1. onreadystatechange 이벤트 (송수신 상태가 변할 때 시작)
* IE 이외 브라우저에서는 콜백 스타일의 onload 이벤트도 이용 가능
2. readyState 프로퍼티(송수신 상태를 나타내는 값 "4" 송신 완료)
* onload의 경우는 필요하지 않음
3. responseText 또는 responseXML(데이터를 텍스트 또는 DOMDocument로 수신)
XMLHttpRequest 작성법
윈도우 익스플로러 XMLHtttpRequest 선언문
var request = new ActiveXObject("Microsoft.XMLHTTP");
익스플로러 버전 4.0부터 5.5까지
또는
var request = new ActiveXObject("MSXML2.XMLHTTP");
익스플로러 버전 6.0부터
MSXML2는
윈도우 익스플로러 외에는 XMLHttpRequest 선언문
var request = new XMLHttpRequest();
소스코드
<script type="text/javascript">
function createHttpRequest() {
//윈도우 익스플로러 버전이 4,5,6 버전이라면
if (window.ActiveXObject) {
try{
return new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try{
return new ActiveXObject("Microsoft.XMLHTTP");
} catch (e2) {
return null;
}
}
//아니면 Win Mac Linux ml, fl, 08 Mac sl Linux k3용
} else if (window.XMLHttpRequest) {
} else {
return null;
}
}
</script>