Javascript 清除间隔不工作(尝试了所有其他答案)

Javascript 清除间隔不工作(尝试了所有其他答案),javascript,jquery,Javascript,Jquery,所以我有这个功能来检查对手何时连接。除了clearInterval之外,一切都正常。。。我尝试添加window.setInterval和window.clearInterval。我试着添加self。太 $(document).ready(function() { var waitForOpponent = setInterval(checkUserStatus, 2000); function checkUserStatus() { $('#user').load('

所以我有这个功能来检查对手何时连接。除了clearInterval之外,一切都正常。。。我尝试添加window.setInterval和window.clearInterval。我试着添加self。太

$(document).ready(function() {

    var waitForOpponent = setInterval(checkUserStatus, 2000);

    function checkUserStatus() {
    $('#user').load('checkuser.php?randval='+ Math.random());
        $("#user").ajaxStop(function(){
       if(document.getElementById("user").innerHTML!=""){
                clearInterval(waitForOpponent);
        opponentConnected();
       }
    });
    }

});
我也试着这样做:

var waitForOpponent;

function check() { waitForOpponent = setInterval(checkUserStatus, 2000); }

check();

请帮帮我,伙计们。。我尝试了一切…

摆脱
ajaxStop
并使用
.load
的成功回调

$('#user').load('checkuser.php?randval='+ Math.random(),function(){
    if(document.getElementById("user").innerHTML!=""){
        clearInterval(waitForOpponent);
        opponentConnected();
    }
});
如果请求花费的时间超过2秒,将永远不会调用ajaxstop

我认为更好的选择是不使用setInterval:

function checkUserStatus() {
    $('#user').load('checkuser.php?randval='+ Math.random(),function(){
        if(document.getElementById("user").innerHTML!=""){
            opponentConnected();
            return; // exit
        }
        setTimeout(checkUserStatus,2000); // continue after 2 seconds
    });
}
checkUserStatus(); // start it up

这可以防止ajax请求因连接速度慢或超时而堆积起来。

感谢您提供了有史以来最快的答案!顺便说一下.ajaxStop正在加载,因为正在调用opponentConnected()(当然是无休止地调用)。但是,尽管如此,我还是使用了第二种解决方案,它工作得非常好!谢谢