function createRequestObject() //object 생성이 가능한 브라우저인지 확인.
{
var req;
//
if(window.XMLHttpRequest) // 브라우져가 XMLHttpRequest 객체를 가지고 있는지 판단
{
// Firefox, Safari, Opera...
req = new XMLHttpRequest();
}
else if(window.ActiveXObject) // 브라우가 ActiveX 를 받아올 수 있는지 판단
{
// Internet Explorer 5+
req = new ActiveXObject("Microsoft.XMLHTTP");
}
else // HTTP 통신을 할수 없는 브라우져인 경우
{
//"Your Browser Does Not Support This Script - Please Upgrade Your Browser ASAP");
}
return req; // 브라우져에 맞는 HTTP 객체를 가져와 객체 리턴
}
// XMLHttpRequest object생성 [위의 함수로 브라우저에 맞는 객체를 받아옴]
var http = createRequestObject();
function sendRequest(page) // 데이터 페이지 불러오기
{
// get 방식으로 파라미터로 넘겨받은 객체를 가져오도록 셋팅
http.open('get', page);
http.setRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT"); //캐싱방지ㅋ
// 페이지로부터의 onreadystatechange 즉 읽어들일 수 있다는 상태값을 받으면 handleResponse 함수를 실행하도록 함
http.onreadystatechange = handleResponse;
// 페이지를 가져오도록 호출
http.send(null);
}
function handleResponse() // 불러온값 처리
{
// http.readyState 4 인경우 객체를 호출한 페이지로부터 읽어들일 준비가 됐다는 말이고
// http.status 가 200 인 경우는 에러가 발생하지 않고 온전히 컨텐츠가 로딩됐음을 의미 합니다.
// http.status 상태는 여러가지가 있을수 있는데 페이지를 찾을수 없을경우 404 컴파일이 안됐을경우 500
// 페이지 접속 권한이 없을경우 403 등의 오류등을 가져옵니다.
if(http.readyState == 4 && http.status == 200)
{
// Text returned FROM the PHP script
// http 객체로 받아온 페이지의 컨텐츠 TEXT 를 받아와 response 변수에 저장
var response = http.responseText;
// 받아온 값이 유효하면
if(response)
{
// 페이지에서 불러온 값을 id 가 dbstatus 인객체에 표시
document.getElementById("dbstatus").innerHTML = response;
}
}
}
function repeatloop() //최종적으로 처리해서 보여주기
{
// sendRequest 함수를 호출하며 파라미터로 호출할 페이지 명을 넘겨줌
sendRequest('sampledb.php'); // 값을 받아올 php의 위치
// 1초후에 자기 함수를 다시 호출 재귀함수
setTimeout("repeatloop()", 1000); //refresh 빈도 1000 = 1초
}
// 브라우져가 실행될때 repeatloop 함수를 실행
window.onload=function()
{
// repeatloop 함수 호출
repeatloop();
}
</script>
</head>
<body>
읽지 않은 새글이<span id="dbstatus"></span>개 있습니다.
</body>
</html>