0

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呼び出しがあります。

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();

ここで、間隔が刻まれて最初の呼び出しを実行するタイミングで2番目のコードを実行すると、呼び出しは実際にはほぼ同時に実行されます。しかし、その後、間隔がどういうわけか死んでいるように見えます-彼はもうカチカチ音をたてません。

これは既知の問題ですか、それとも何か大きなものが見られないだけですか...

手伝ってくれてありがとう!

4

2 に答える 2

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);
}
于 2012-06-01T13:20:36.547 に答える
0

たった今解決しました。

これは、Firefox のバグのようなものです (bugzilla.mozilla.org にあります)。

NS_ERROR_NOT_AVAILABLE

これは私には見せられませんでしたが、今見つけました。Firefox が同時に 2 つの呼び出しを実行しようとすると表示されます。

詳細については、こちらのブログエントリを見つけました

1 つの呼び出しが実行されている場合、もう 1 つの呼び出しが待機することを解決しました。

于 2012-06-01T14:12:11.960 に答える