JavaScript/Ajax:如果 XMLHttpRequest() 在 x 秒后失败,则继续
Posted
技术标签:
【中文标题】JavaScript/Ajax:如果 XMLHttpRequest() 在 x 秒后失败,则继续【英文标题】:JavaScript/Ajax: If XMLHttpRequest() fails after x seconds, proceed 【发布时间】:2012-12-24 14:58:07 【问题描述】:[重要的是要注意:我事先做了研究,看到有人问过类似的问题,但没有什么适合我的需要。]
我使用以下 javascript/Ajax 代码每 120 秒刷新一次 iframe (tracker
)。如果由于某种原因刷新失败(例如没有互联网连接),它会将页面重定向到Tracker2.html
。
<script type=text/javascript>
setInterval(function()
var rq = new XMLHttpRequest();
rq.open('GET', document.getElementById('tracker').src, true);
rq.onreadystatechange = function()
if(rq.readyState === 4)
if(rq.status === 200)
else
window.location.href = "Tracker2.html";
;
rq.send(null);
document.getElementById("tracker").src+="";
,120000);
</script>
我的问题是,使用XMLHttpRequest
,大约需要 45-60 秒才能“确认”没有互联网连接(= 刷新 iframe 失败),然后才会重定向到 Tracker2.html
。
理想情况下,我希望只等待 5 秒,如果 5 秒后,如果跟踪器的 iframe 没有响应,则重定向。
基本上,我不需要它等待 45-60 秒来意识到没有互联网连接 - 这是一个内部网络,只需半秒即可确认是否有网络连接。
任何帮助将不胜感激。
【问题讨论】:
可以设置timeout attribute,然后为timeout event设置handler。 【参考方案1】:您可以在我编辑您的代码的 setInterval 中添加一个 setTimeout。
setInterval(function()
var rq = new XMLHttpRequest();
rq.open('GET', document.getElementById('tracker').src, true);
rq.onreadystatechange = function()
if(rq.readyState === 4)
if(rq.status === 200)
clearTimeout(cancel);
else
window.location.href = "Tracker2.html";
;
rq.send(null);
var cancel = setTimeout(function()
window.location.href = "Tracker2.html";
, 5000);
document.getElementById("tracker").src+="";
,120000);
【讨论】:
以上是关于JavaScript/Ajax:如果 XMLHttpRequest() 在 x 秒后失败,则继续的主要内容,如果未能解决你的问题,请参考以下文章
是否可以使用 JavaScript/AJAX 在客户端创建文件? [复制]