我有一个Interval,它每隔3秒运行一次。
intervalStepper = window.setInterval('intervalTick()','3000');
function intervalTick() {
if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else {// code for IE6, IE5
xmlhttp=new ActiveXObject('Microsoft.XMLHTTP');
}
xmlhttp.onreadystatechange=function() {
if (xmlhttp.readyState==4 && xmlhttp.status==200) {
gotResult(xmlhttp.responseText);
}
}
xmlhttp.open('GET','index.php?ajax=true',true);
xmlhttp.send();
}
function gotResult(res) {
alert(res);
}
另外,我还有另一个Ajax Call,它在点击按钮时运行。
if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else {// code for IE6, IE5
xmlhttp=new ActiveXObject('Microsoft.XMLHTTP');
}
xmlhttp.onreadystatechange=function() {
if (xmlhttp.readyState==4 && xmlhttp.status==200) {
agentDetailGotten(xmlhttp.responseText);
}
}
xmlhttp.open('GET','index.php?anotherPage=true',true);
xmlhttp.send();
现在,如果我在间隔结束时执行第二个代码并执行第一个调用,则调用实际上几乎同时运行。但是,似乎间隔以某种方式死亡 - 他不再打勾了。
这是一个已知的问题还是我只是没有看到大事......
感谢您的帮助!
答案 0 :(得分:0)
尝试再次清除并设置间隔:
intervalStepper = window.setInterval('intervalTick()',3000);
function intervalTick() {
window.clearInterval(intervalStepper);
if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else {// code for IE6, IE5
xmlhttp=new ActiveXObject('Microsoft.XMLHTTP');
}
xmlhttp.onreadystatechange=function() {
if (xmlhttp.readyState==4 && xmlhttp.status==200) {
gotResult(xmlhttp.responseText);
}
}
xmlhttp.open('GET','index.php?ajax=true',true);
xmlhttp.send();
intervalStepper = window.setInterval('intervalTick()',3000);
}
function gotResult(res) {
alert(res);
}
答案 1 :(得分:0)
我刚才解决了。
看起来这就像firefox bug(在bugzilla.mozilla.org上找到)
NS_ERROR_NOT_AVAILABLE
这个没有向我展示,但我现在才发现。当Firefox尝试同时执行两个调用时出现。
有关详细信息,我找到了一个博客条目here
我解决了,如果一个呼叫正在运行,另一个呼叫正在等待。