我正在开发一个小部件,该小部件通过ajax从Internet上获取数据,如果小部件无法连接到服务器,我想提供一条错误消息。我正在使用jquery的ajax对象执行请求,该对象提供了错误回调函数,但是当没有Internet连接时,只有在发出请求但由于其他原因而失败的情况下才不会调用它。

现在如何检查计算机是否已连接到互联网?

最佳答案

更新:由于您正在创建仪表板小部件,因此我进行了许多测试。

我发现没有互联网连接时,$.ajax调用实际上触发了错误。因此,我成功地手动创建了XMLHTTPRequest对象。如果您需要JSON解析,建议您也包括json2.js解析器。

我要做的工作:

  • 在Dashcode的窗口小部件属性中,我单击了“允许网络访问”(如果您不使用Dashcode,请检查文档以获取适当的plist设置以将其打开)
  • 我使用了以下代码:

  • var xhr = new XMLHttpRequest();
    xhr.addEventListener('readystatechange',state_change,true);
    xhr.open(“GET”,url,true);
    xhr.send(null);

    函数state_change(){
    if(xhr.readyState == 4){
    if(xhr.status == 200){
    console.log('worked'); //仅在以Dashcode运行时有效
    //使用xhr.responseText或JSON.parse(xhr.responseText)
    } else if(xhr.status == 0){
    console.log('no internet'); //仅在以Dashcode运行时有效
    }其他{
    //其他错误
    }
    }
    }

    /结束更新

    自您在评论中提出要求以来,我通过编辑对your original question的答复来回答此问题。发表评论后,我看到您发布了此问题。

    总而言之,请将timeout参数添加到您的$.ajax调用中,并将其设置为较小的数字(例如5000毫秒)。请求超时后,将调用您的错误函数。

    关于javascript - javascript/破折号:检查互联网连接,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1844556/

    10-17 00:02