0

我在两台计算机上 24/7 运行一个网页。一台计算机正在运行IE8,另一台正在运行IE9。在这个网页上是一个运行$.getJSON以检索cross-domainJSON 对象的 javascript 计时器。在正常情况下$.getJSON可以完美运行,但是其中一台计算机上的 Internet 连接可能会暂时中断。由于我正在使用$.getJSON检索网页的新内容,因此如果互联网暂时中断,将显示旧内容。

我的问题是,如果在调用'时互联网出现故障,我认为$.getJSON'事件会触发。在这种情况下,将设置一个新的计时器来尝试在 X 分钟内检索(它永远不会停止尝试)。在测试这个时,我禁用了我的互联网连接,但事件中的代码没有触发。fail$.getJSONJSONfail

在没有网络连接的情况下会fail不会被调用?如果是这样,您会建议什么来防止我的 JavaScript 在互联网出现故障时永久停止?

(我查看的一种方法是在 JSON 调用之前检查 Internet 连接,但是我读过window.navigator.onLine的是不可靠的,我找不到任何其他解决方案)

4

1 回答 1

1

getJSON只是ajax已经设置了一些值的简写。并且ajax有一个timeout选项。这可能是最可靠的选择(但显然不会立即响应网络故障)。我个人会将它与您可以找到的用于确定网络状态的任何检查结合起来。

$.ajax({
    dataType: "json",
    url: url,
    data: data,
    success: success,
    timeout: 10000 // 10 seconds
});

http://api.jquery.com/jQuery.getJSON/

于 2013-04-13T20:48:01.860 回答