基本的には、ユーザーがWebサービスを呼び出す更新ボタンをクリックし、データを取得してdivコンテナをリフレッシュして新しいデータを表示するときに、リフレッシュボタンがあります。JQuery - 2秒ごとにボタンをクリック
しかし、私は、ユーザーが更新ボタンをクリックしなくても、のdivコンテナを更新したい....
は、どのように私はjQueryのページ全体を更新せず、私のボタン2秒ごとにクリックしているのですか?またはこれを行うためのよりよい方法がありますか?
基本的には、ユーザーがWebサービスを呼び出す更新ボタンをクリックし、データを取得してdivコンテナをリフレッシュして新しいデータを表示するときに、リフレッシュボタンがあります。JQuery - 2秒ごとにボタンをクリック
しかし、私は、ユーザーが更新ボタンをクリックしなくても、のdivコンテナを更新したい....
は、どのように私はjQueryのページ全体を更新せず、私のボタン2秒ごとにクリックしているのですか?またはこれを行うためのよりよい方法がありますか?
あなたは2秒ごとに関数を実行するためにsetInterval
を使用することができます。
その関数への各呼び出しの間に一定の時間遅延して、繰り返し関数を呼び出します。
次に、呼び出された関数でボタンのクリックハンドラを呼び出します。理想的には$x.click()
といっしょにクリックハンドラを直接呼び出すことができます。 setTimeout
を使用して
は良いアイデアかもしれません:
は、指定した遅延の後にコードスニペットや関数を実行します。
コールバック関数はクリックハンドラを呼び出し、終了すると再度setTimeout
を呼び出して自分自身をトリガします。このアプローチは、あなたのタイムイベントがお互いに溢れないようにします。すべてのコードはあなたのものなので、$.ajax
成功とエラーのコールバック(またはおそらくcomplete
コールバック)がタイマーを再開できるように再構成することができます。
setTimeoutのアイデアは良いものです。 – kinakuta
これは、setInterval
コマンドを使用してきれいな古いjavascriptで行うことができます。次に例を示します。
//Run updates every 2 seconds
var x=setInterval(doUpdates,2000);
function doUpdates() {
//Do whatever updating you need
}
あなたがここに自動更新を停止したい場合は、コマンドclearInterval(x);
を使用することができます。
データの更新に時間がかかる場合は、各要求の間に2秒の間隔があるようにすることができます。
function doUpdates() {
//Do whatever updating you need
$.ajax({
'success':function() {
setTimeout(doUpdates,2000);
}
});
}
2番目の例では、更新が完了した直後にsetTimeoutを配置します。
あなたは時間のすべての一定期間後に機能を呼び出すためのsetIntervalを使用することができます。
setInterval(function(){
$("#myBtn").click();
},2000);
これは2秒ごとにmyBtnです要素のクリックイベントを呼び出します。
ajaxリクエストを送信する場合、間隔よりも応答を受信するまでに時間がかかることがあります。これはいくつかの問題を引き起こすかもしれません。代わりに再帰呼び出しを使用することを検討してください。(ajaxコールバック関数からのclick関数の呼び出し)
setIntervalを使用してコールバックでwebserviceを呼び出してみましたか? – kinakuta