Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 检测服务是否可用的最佳实践_Javascript_Jquery_Web Services - Fatal编程技术网

Javascript 检测服务是否可用的最佳实践

Javascript 检测服务是否可用的最佳实践,javascript,jquery,web-services,Javascript,Jquery,Web Services,我需要检测我的服务现在是否可用 但是,由于某种原因,当我尝试访问某些服务方法时,即使服务已关闭,我在ajax()函数中也获得了成功 我在success字段中得到一个包含404消息的html页面 我最好的猜测是使用typeof(data)并将其与字符串类型进行比较 但我认为一定有更好的解决办法 没什么特别的,只有$.ajax() 按照你提供的信息进行 如果您控制该服务(即:您构建了该服务),那么当该服务不可用时,您可以让Web服务器返回503代码。这是Web服务器在您的服务关闭时应该做的事情 如果

我需要检测我的服务现在是否可用

但是,由于某种原因,当我尝试访问某些服务方法时,即使服务已关闭,我在ajax()函数中也获得了成功

我在success字段中得到一个包含404消息的html页面

我最好的猜测是使用
typeof(data)
并将其与字符串类型进行比较

但我认为一定有更好的解决办法

没什么特别的,只有$.ajax()


按照你提供的信息进行

如果您控制该服务(即:您构建了该服务),那么当该服务不可用时,您可以让Web服务器返回503代码。这是Web服务器在您的服务关闭时应该做的事情

如果没有,那么您需要检查404错误代码,而不是您现在正在接收的错误代码,并在代码中优雅地处理它

我假设您正在为客户机使用jQuery,因为您引用了ajax()调用。下面是检查失败回调中错误代码的基本示例:

var serviceRequest = $.ajax(...);

serviceRequest.done(function(returnedData) {
    // Service is active and returning data.
});

serviceRequest.fail(function (xhr) {
    if(xhr.status == 404) {
        // handle this.
    }

    if(xhr.status == 503) {
        // handle this.
    }
});

为什么您会收到404的成功回调,这是我以前从未见过的。

您能提供您的js/ajax代码吗?Thx@WimOmbelets我这样做了,但不认为这有什么帮助参考:注意,文档将错误回调为
error(jqXHR jqXHR,String textStatus,String errorwhold)
“当HTTP错误发生时,errorwhold接收HTTP状态的文本部分,例如“找不到”或“内部服务器错误”。“好的,那么如果您希望
json
xml
的行为正确,并且
string
表示错误,那么您检查
typeof(data)
的想法可能是好的。
var serviceRequest = $.ajax(...);

serviceRequest.done(function(returnedData) {
    // Service is active and returning data.
});

serviceRequest.fail(function (xhr) {
    if(xhr.status == 404) {
        // handle this.
    }

    if(xhr.status == 503) {
        // handle this.
    }
});