如何在客户端访问带有javascript的页面期间检测服务器是否关闭?
具有永久保持活动标题的请求可以做到这一点,但问题是即使用户导航离开页面也会触发。
也许这有点幼稚,但是当 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
,则不存在响应标头。