-1
 $.ajax({
    url: "data.php"
}).done(function(data) { 
    //code
});

これを jQuery タイムアウト関数でラップする方法、たとえば 2 秒ごとに ajax リクエストを送信します。

4

3 に答える 3

4

これを でラップするとsetInterval、サーバーに大量のリクエストを送信するリスクがあり、すべてのリクエストを元に戻すことができない可能性があります。コールバックの中に入れtimeoutます:

function runAjax() {
    $.ajax({
        url: "data.php"
    }).done(function(data) { 
        //code
        setTimeout(runAjax, 2000); //Run it again in 2 sec
    });
}

runAjax(); //I suppose we should start the AJAX :D
于 2013-09-30T13:11:11.383 に答える
1

私はこのようなことをします:

var ajax = null;
function callAjax()
{
  if(ajax != null)
     ajax.abort();
  ajax = $.ajax({
    url: "data.php"
  }).done(function(data) { 
    //code
  });
  setTimeout(callAjax, 1000); // Every 1 second
}
callAjax();

このコードは、Ajax 呼び出しを 1 秒ごとに実行します。別のリクエストが実行中の場合、別のリクエストを実行する前にそれを強制終了します。

より良い方法は、ロング ポーリングを使用することです: http://techoctave.com/c7/posts/60-simple-long-polling-example-with-javascript-and-jquery

于 2013-09-30T13:12:05.283 に答える
0

setIntervalを使用できます。

var xhr;
setInterval(
   function runAjax() {
        if(xhr) {
            xhr.abort();
        }
        xhr = $.ajax({
            url: "data.php"
        }).done(function(data) { 

        });
    }, 2000
)

このようにしてみてください。

于 2013-09-30T13:12:34.220 に答える