2009-05-29 11 views

答えて

1

この動作するはずです:

function loadResults(){ 
    $('div.to.update').load('yourpage.php') 
    setTimeOut(arguments.callee, 10000) 
} 

loadResults() 

仕組み:この行は 'yourpage.php' へのAJAX呼び出しを行い、そのページの結果とdiv要素を満たし

$('div.to.update').load('yourpage.php') 

(ノートyourpageを呼び出した結果は、ページ全体が、ちょうどスニペット)

setTimeOut(arguments.callee, 10000) 

のsetTimeoutスケジュールすべきではありません将来の関数呼び出し、この場合は10秒です。すべての関数がアクセスできる変数「引数」から取り出された関数自体を呼び出す関数。これは再帰関数のようですが、10秒の遅延があります。

最後に、関数を最初に呼び出してループを開始します。

EDIT:あなただけのこの操作を行う、後でループを停止する必要がある場合も)のsetInterval(で関数を呼び出すことができます

function loadResults(){ 
     $('div.to.update').load('yourpage.php') 
    } 

    var interval_id = setInterval(loadResults,10000) 

    // Later on when you want to stop the refresh... 

    clearInterval(interval_id) 
+0

それは非常にエレガントです – chris

1

定期的なアップデータが必要です。ような何か:

function callMeAtInterval() 
{ 
    $.ajax({ 
        method: 'get', 
        url : 'status.php', 
        dataType : 'text', 
        success: function (text) { $('#updateMe').html(text); } 
       }); 

} 
//causes callMeAtInterval() to get called every 5 seconds. 
var holdTheInterval = setInterval(callMeAtInterval, 5000); 

jQueryの$.ajax機能がURLで指定されたリソースの出力を取得し、成功コールバックを使用すると、上記の例では、結果をいくつかの処理を行うことができます:

('#updateMe').html(text); 

は、id updateMeのページ要素をサーバーから返されたテキストで埋めます。

+0

+1のスポットで、あなたはそれに私を打つ – bendewey

+0

私はそれが2つのdownvotesを得ることができたことが驚くべきことを見つける。二!それは本当に役に立たないのでしょうか? – karim79

+0

私は2つのdownvotesも持っています! WTF! –

0

それはのsetIntervalは、すべてこの機能を実行することは注目に値します保留中のAJAXリクエストの進行状況に関係なく、5秒(この例ではkarim79が提供されています)。最初のリクエストが完了するのに3秒かかる場合、setIntervalは5秒ではなく2秒後に次のリクエストを送信します。実際にリフレッシュと次のリクエストの間に5秒が必要な場合は、successコールバック関数。

function callMeAtInterval() { 
    $.ajax({ 
     method: 'get', 
     url : 'status.php', 
     dataType : 'text', 
     success: function (text) { 
      $('#updateMe').html(text); 
      setTimeout(callMeAtInterval, 5000); 
      } 
    }); 

} 

このアプローチの欠点は、1つの失敗したsetTimeoutはセクションが再びリフレッシュされないことを意味します。

+0

これは、私は最高のソリューションだと信じて! –