2009-08-06 3 views
1

주로 웹 사이트가 온라인인지 어떤 웹 사이트인지보고하기 위해 몇 가지 웹 사이트의 상태를 모니터링하는 데 사용할 작은 응용 프로그램을 작성하고 있습니다. 오프라인입니다.웹 사이트에 AJAX 요청이 올라 갔거나 다운되었을 수도 있습니다.

나는 현재 을 onreadystatechange 함수로이 코드를 가지고 : 웹 사이트가 온라인 상태 일 때

if(xmlhttp.readyState == 4) { 
    if (xmlhttp.status == 200) { 
     element(id).innerHTML = "Online"; 
    } 
    else { 
     element(id).innerHTML = "Offline"; 
    } 
} 

이 제대로 실행을,하지만 난 웹 사이트에 Ajax 요청을 할 경우는 결코 '다른'블록에 도달하지 그게 오프라인이야 .. 요청이 웹 사이트가 다운되면 readyState 4에 도달하지 못하는 것 같아요?

오프라인 웹 사이트에 AJAX 요청을 캡처하는 방법에 대한 제안 사항이 있으십니까?

+0

다른 방법은 숨겨진 IFRAME을 각 페이지에서 가리키고 각각에 onload 및 onerror 이벤트 처리기를 배치하는 것입니다. – EricLaw

답변

1

원하는 것은 특정 시간 (예 : 시간 초과)이 지나면 요청을 중단하는 것입니다.

Async Requests over an Unreliable Network

+0

그래, 조사해 봤는데 오프라인 상태 인 리소스에 AJAX 요청을하면 readyState는 4에 도달하지 않고 요청을 중단 할 때까지 1로 유지됩니다. – ampersandre

0

난 그냥 지금 Fiddler를 사용하여 테스트, 그리고 당신은 404 오류에 대한 헤더를 확인할 수 있습니다 상태 (502), 바디 512

+0

그래,하지만 내 else 블록은 200이 아닌 것을 잡아야한다. 어떤 이유로 든 그렇지 않다. – ampersandre

+0

서버에 연결할 수없는 경우 프록시에 의해 502가 생성된다. 프록시가 없다면 502는 없을 것입니다. – EricLaw

-1

를 반환했습니다.

+0

서버가 404를 반환하지 않기 때문에 다운 된 서버에서 404를 얻지 못할 것입니다. – EricLaw

+0

아 좋은 지적입니다. 서버가 아닌 생각하는 페이지입니다. – RiddlerDev

관련 문제