0

我有一个将在客户端机器上运行的自托管服务(使用 WCF)。该服务应该向另一台服务器发出请求,以 XML 格式获取数据,然后以JSONP. 现在我想检查服务是否正在运行.. 我该如何检查?

在我的 JS 代码中,我使用带有回调的$.getJSON,所以我尝试.fail像这样使用:

$.getJSON("http://localhost:8080/url?callback=?", function () {
    alert("success");
}).fail(function () {
    alert('fail');
})

但是当服务器未运行时未调用失败函数(在 chrome 上,类型是pending并且Status是失败的)

然后我尝试像这样使用 $.AJAX:

$.ajax({
    type: 'GET',
    dataType: 'jsonp',
    url: 'http://localhost:8080/url?callback=?',
    success: function (data, textStatus) {
        alert('request successful');
    },
    error: function (xhr, textStatus, errorThrown) {
        alert('request failed');
    }
});

我得到了同样的结果。

4

1 回答 1

0

当您向本地主机发出 AJAX 请求并/url?返回天气时,其他服务器是否已启动,您的脚本不会失败。因为http://localhost/url是在线的。

我会让/url脚本返回 JSON 数组remoteHostOnline: true or false,然后使用:

$.ajax({
type: 'GET',
dataType: 'jsonp',
url: 'http://localhost:8080/url?callback=?',
success: function (data, textStatus) {
    if (data.remoteHostOnline == false) {
        alert('remote host not online');
    }
}
});

你可能需要调整这个脚本,我没有测试它,但你会明白哪里出了问题。

于 2013-09-20T13:25:03.877 回答