代码之家  ›  专栏  ›  技术社区  ›  ampersandre

对可能已打开或已关闭的网站执行Ajax请求

  •  1
  • ampersandre  · 技术社区  · 17 年前

    我正在写一个小应用程序,它将用于监控一些网站的状态,主要是报告哪些网站在线,哪些网站离线。

    我目前将此代码作为 OnReadyStateChange(状态更改) 功能:

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

    它在网站联机时正常运行,但是如果我在脱机的网站上执行Ajax请求,它就不会到达“else”块。如果网站关闭,我想请求永远不会到达readystate 4?

    对于如何捕获到脱机网站的Ajax请求有什么建议吗?

    4 回复  |  直到 17 年前
        1
  •  1
  •   karim79    17 年前

    您要做的是在一段特定的时间后中止请求,即 超时 . 这篇文章应该有帮助:

    Async Requests over an Unreliable Network

        2
  •  1
  •   EricLaw    17 年前

    IE8的XHR对象支持OnTimeout事件( http://msdn.microsoft.com/en-us/library/cc197061(VS.85).aspx )

    readystate=4表示“已加载”,如果不加载内容,则不会发生这种情况。

        3
  •  0
  •   Amr Elgarhy    17 年前

    我刚刚用 Fiddler ,返回状态502,正文512

        4
  •  -1
  •   RiddlerDev    17 年前

    您可以检查报头是否有404错误。