当网络掉线时,getJSON's fail事件没有被调用

getJSON's fail event not being called when internet drops

本文关键字:事件 fail 调用 网络 getJSON      更新时间:2023-09-26

我在两台电脑上24/7运行一个网页。一台计算机运行IE8,另一台运行IE9。在这个网页上是一个javascript定时器,它运行$.getJSON来检索cross-domain JSON对象。$.getJSON在正常情况下工作完美,但是其中一台计算机的互联网连接可能会暂时中断。由于我使用$.getJSON为网页检索新内容,如果互联网暂时停止,旧内容将被显示。

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

在没有互联网连接的情况下,fail不会被调用吗?如果是这样,你有什么建议,以防止我的JavaScript永久停止当互联网宕机?

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

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

$.ajax({
    dataType: "json",
    url: url,
    data: data,
    success: success,
    timeout: 10000 // 10 seconds
});
http://api.jquery.com/jQuery.getJSON/