$.ajax({
url: "data.php"
}).done(function(data) {
//code
});
これを jQuery タイムアウト関数でラップする方法、たとえば 2 秒ごとに ajax リクエストを送信します。
これを でラップすると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
私はこのようなことをします:
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
setIntervalを使用できます。
var xhr;
setInterval(
function runAjax() {
if(xhr) {
xhr.abort();
}
xhr = $.ajax({
url: "data.php"
}).done(function(data) {
});
}, 2000
)
このようにしてみてください。