对可能处于运行状态或关闭状态的网站执行AJAX请求

对可能处于运行状态或关闭状态的网站执行AJAX请求,ajax,Ajax,我正在编写一个小应用程序,用于监控一些网站的状态,主要是报告哪些网站在线,哪些网站离线 我目前将此代码用作onreadystatechange函数: if(xmlhttp.readyState == 4) { if (xmlhttp.status == 200) { element(id).innerHTML = "Online"; } else { element(id).innerHTML = "Offline"; } } 当

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

我目前将此代码用作onreadystatechange函数:

if(xmlhttp.readyState == 4) {
    if (xmlhttp.status == 200) {
        element(id).innerHTML = "Online";
    }
    else {
        element(id).innerHTML = "Offline";
    }
}
当网站在线时,它可以正常运行,但如果我在离线的网站上执行AJAX请求,它永远不会到达“else”块。。我想如果网站关闭,请求永远不会到达readyState 4


有没有关于如何捕获到离线网站的AJAX请求的建议?

我刚刚使用测试,它返回了状态502,Body 512

我刚刚使用测试,它返回了状态502,正文512可以检查标头是否存在404错误。

可以检查标头是否存在404错误。

您要做的是在特定时间(即超时)后中止请求。这里有一篇文章应该会有所帮助:


您要做的是在特定时间(即超时)后中止请求。这里有一篇文章应该会有所帮助:


IE8的XHR对象支持ontimeout事件()


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

IE8的XHR对象支持ontimeout事件()


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

是的,但我的else块应该捕获任何不是200的内容。由于某些原因,如果服务器不可访问,则不会由代理生成502。如果没有代理,就不会有502。是的,但是我的else块应该捕捉到任何不是200的东西。由于某些原因,如果服务器不可访问,则不会由代理生成502。如果没有代理,就不会有502。是的,我做了一些调查,当你对离线资源执行AJAX请求时,readyState永远不会达到4,它会一直保持在1,直到你中止请求。是的,我做了一些调查,当你对离线资源执行AJAX请求时,readyState永远不会达到4,在您中止请求之前,它将保持为1。由于服务器无法返回404,您将无法从停机的服务器获得404。由于服务器无法返回404,您无法从停机的服务器获得404。另一种方法是在每个页面上都指向一个隐藏的IFRAME,另一种方法是在每个页面上都有一个隐藏的IFRAME,并在每个页面上放置onload和onerror事件处理程序。