我正在开发一个小部件,该小部件通过ajax从Internet上获取数据,如果小部件无法连接到服务器,我想提供一条错误消息。我正在使用jquery的ajax对象执行请求,该对象提供了错误回调函数,但是当没有Internet连接时,只有在发出请求但由于其他原因而失败的情况下才不会调用它。
现在如何检查计算机是否已连接到互联网?
最佳答案
更新:由于您正在创建仪表板小部件,因此我进行了许多测试。
我发现没有互联网连接时,$.ajax
调用实际上触发了错误。因此,我成功地手动创建了XMLHTTPRequest对象。如果您需要JSON解析,建议您也包括json2.js解析器。
我要做的工作:
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/