2011-12-24 9 views
3

インデックスページには、フォーラムの最後の投稿を表示するdivボックスがあります。 10秒ごとに再読み込みします。x秒後のコンテンツのリロード

$(document).ready(function(){ 
    while(1==1) 
    { 
     $("#lastPosts").delay(10000).load("showLastPosts.php"); 
    } 
}); 

これは良い考えですか?より良いアプローチがありますか?

+0

どこからデータを読み込んでいますか?あなたはサーバーと通信する必要がありますか? –

答えて

3

ではなくsetIntervalをお試しください:

$(document).ready(function(){ 
    setInterval(function() { 
     $("#lastPosts").load("showLastPosts.php"); 
    }, 10000); 
}); 

をリモートコンテンツをロードしているので、あなたも(あなたの間隔は10秒であることから、可能性は低い)AJAXコールバック異なる順序で来ることができるという可能性を考慮すべきです。これを防ぐために、あなたはsetTimeoutと再帰関数(MDNの記事の下部に概説される)を使用することができます

(function getLatestPosts(){ 
    setTimeout(function(){ 
     $("#latestPosts").load("showLastPosts.php", getLatestPosts);  
    }, 10000); 
})(); 
+1

その 'while'ループを取り除きます。ループするたびに新しいタイマーを生成したくないのですか? – Blender

+0

@Blender:ただのタイプミス。削除されました。 –

0

を私はあなたがdiv要素にロードするための最新情報を取得するためにサーバーと通信することだと思います。したがって、ajaxの使用を検討する必要があります。

$(document).ready(function(){ 
    setInterval(function() { 
     $.ajax({ 
     type : 'GET' 
     url: 'showLastPosts.php', 
     datatype: 'html', 
     success: function(data){ 
      $("#lastPosts").html(data); 
      } 
     }); 
    }, 10000); 
}); 
+0

['.load'](http://api.jquery.com/load/)は' .ajax'の短縮形です。 –

関連する問題