互联网掉线时,没有调用getJSON的失败事件

时间:2013-04-13 20:40:28

标签: javascript jquery json internet-explorer cross-domain-policy

我在两台计算机上全天候运行一个网页。一台计算机正在运行IE8,另一台正在运行IE9。在此网页上有一个javascript计时器,它运行$.getJSON来检索cross-domain JSON对象。 $.getJSON在正常情况下完美运行,但其中一台计算机上的互联网连接可能会暂时中断。由于我使用$.getJSON检索网页的新内容,如果互联网暂时停机,则会显示旧内容。

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

如果没有互联网连接,是否会调用fail?如果是这样,你会建议什么阻止我的JavaScript在互联网停止时永久停止?

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

1 个答案:

答案 0 :(得分:1)

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

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

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