관리 메뉴

nkdk의 세상

ajax를 이용한 xmlhttprequest와 현재 상태 알림이 본문

My Programing/AJAX

ajax를 이용한 xmlhttprequest와 현재 상태 알림이

nkdk 2008. 6. 3. 11:56

이번 장에서는 xmlhttprequest를 써서 서버와 비동기로 통신하는 법을 보도록 하겠습니다.
또한 onReadyState라는 현재 서버와의 상태가 어떤 상태인지를 표현하는 방법도 코딩하겠습니다.
자 소스는 다음과 같습니다.

<html>
<head>
<script type='text/javascript'>

var req=null;
var console=null;
var READY_STATE_UNINITIALIZED=0;
var READY_STATE_LOADING=1;
var READY_STATE_LOADED=2;
var READY_STATE_INTERACTIVE=3;
var READY_STATE_COMPLETE=4;
function sendRequest(url, params, HttpMethod) {
 if(!HttpMethod) {
  HttpMethod="GET";
 }
 req=initXMLHTTPRequest();
 if(req) {
  req.onreadystatechange=onReadyState;
  req.open(HttpMethod, url, true);
  req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
  req.send(params);
 }
}

function initXMLHTTPRequest() {
 var xRequest=null;
 if(window.XMLHttpRequest) {
  xRequest=new XMLHttpRequest();  
 } else if (window.ActiveXObject) {
  xRequest=new ActiveXObject("Microsoft.XMLHTTP");
 } return xRequest;
}

function onReadyState() { // <-call back function
 var ready=req.readyState;
 var data=null;
 if(ready==READY_STATE_COMPLETE){
  data=req.responseText;
 } else{
  data="loading...["+ready+"]";
 }
 toConsole(data);
}

function toConsole(data) {
 if(console!=null) {
  var newline=document.createElement("div");
  console.appendChild(newline);
 }
}

window.onload=function() {
 console=document.getElementById('console');
 sendRequest("data.txt");
}
</script>
</head>
<body>
<div id='console'></div>
</body>
</html>