1

如何在客户端访问带有javascript的页面期间检测服务器是否关闭?

具有永久保持活动标题的请求可以做到这一点,但问题是即使用户导航离开页面也会触发。

4

1 回答 1

2

也许这有点幼稚,但是当 ajax 调用失败时,您可以计算响应标头的数量。例如,使用 jQuery,您可以这样做:

$.ajax( {
    'url': urlToTheServer,
    'success': function()
    {
        // server is up
    },
    'error': function( $xhr )
    {
        if( $xhr.getAllResponseHeaders().length < 1 )
        {
            // fair probability server is down
        }
    }
} );

我在我的开发盒上测试这个的方法是将上述内容包装在一个setTimeout()调用中(比如说,10 秒超时)。加载页面。关闭服务器。然后等待超时到期并执行ajax请求。

PS.:$xhr.getAllResponseHeaders()返回一个换行符分隔的标题字符串,而不是标题的数组或对象。起初我忽略了这一点,但是,这不会改变脚本的结果。如果 的字符串长度$xhr.getAllResponseHeaders()小于1,则不存在响应标头。

于 2013-02-13T12:07:23.983 回答