我正在开发一个通过ajax从互联网获取数据的小部件,如果该小部件无法连接到服务器,我想提供一条错误消息。我正在使用 jquery 的 ajax 对象执行请求,该对象提供了错误回调函数,但是当没有互联网连接时,仅当发出请求但因其他原因失败时才调用它。
现在我如何检查计算机是否已连接到互联网?
UPDATE:由于您正在创建仪表板小部件,因此我运行了许多测试。
我发现$.ajax
当没有互联网连接时,调用实际上触发了错误。因此,我开始手动创建 XMLHTTPRequest 对象,并取得了巨大成功。如果您需要 JSON 解析,我建议还包括json2.js http://www.JSON.org/js.html parser.
为了使这项工作成功,我做了以下事情:
- In 小部件属性在 Dashcode 中,我单击“允许网络访问”(如果您没有使用 Dashcode,请检查文档以获取正确的 plist 设置以打开此功能)
- 我使用了以下代码:
var xhr = new XMLHttpRequest();
xhr.addEventListener('readystatechange', state_change, true);
xhr.open("GET", url, true);
xhr.send(null);
function state_change(){
if(xhr.readyState == 4){
if(xhr.status == 200){
console.log('worked'); // Only works if running in Dashcode
// use xhr.responseText or JSON.parse(xhr.responseText)
} else if(xhr.status == 0) {
console.log('no internet'); // Only works if running in Dashcode
} else {
// Some other error
}
}
}
/结束更新
我通过编辑我的答案来回答这个问题你原来的问题 https://stackoverflow.com/questions/1844370/jquery-handle-fallback-for-failed-ajax-request/1844410#1844410既然你在评论中问了。评论后我看到你发布了这个问题。
总结一下,添加timeout
参数给你的$.ajax
调用并将其设置为一个较低的数字(例如 5000 毫秒)。您的错误函数将在请求超时后被调用。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)