私はpoll()
機能を持っています:
$("document").ready(function(){
poll(10);
$("#refresh").click(function(){ poll(10); });
});
function poll(timeout){
return setTimeout(function(){
if (timeout == 10){
timeout = 10000;
}
$.ajax({ url: "/ajax/livedata.php", success: function(data){
$("#result").html(data);
poll(timeout);
}, dataType: "json"});
}, timeout);
}
だから、そこで何が起こるか:
1)ページの読み込み時にpoll()
が呼び出され、ループの実行が開始されます。
2)#refresh
クリックするpoll()
と、その瞬間に呼び出され、すぐに新しいデータを要求します。
問題:クリック#refresh
して新しいデータをリクエストするたびにpoll()
、が再度呼び出されますが、複数回起動されます(最初のクリック+新しいクリックごと)。したがって、期待どおりに10秒ごとに起動するのではなく、10秒ごとに複数回起動します(クリックした回数によって異なります#refresh
)。
これを修正して、クリックするたびに#refresh
1つのインスタンスのみがループしたままになるようにするにはどうすればよいですか?