2013-03-07 53 views
0

所以我有這個功能來檢查對手何時連接。一切正常,除了clearInterval的事情...我試着添加window.setInterval和window.clearInterval。我嘗試添加自我。太...清除間隔不工作(試過所有其他答案)

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

請幫我傢伙..我什麼都試過......

回答

2

擺脫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請求從連接速度慢或超時堆放。

+0

感謝您的最快答案!順便說一句.ajaxStop正在加載,因爲opponentConnected()當然是被調用的(當然是無休止的)。但是,儘管如此,我使用了第二種解決方案,它的工作非常好!謝謝! – 2013-03-07 16:10:27