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

みんな助けてください..私はすべてを試しました...

4

1 に答える 1

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 リクエストが積み重なるのを防ぎます。

于 2013-03-07T16:01:04.140 に答える