2

基本的には、ユーザーがWebサービスを呼び出す更新ボタンをクリックし、データを取得してdivコンテナをリフレッシュして新しいデータを表示するときに、リフレッシュボタンがあります。JQuery - 2秒ごとにボタンをクリック

しかし、私は、ユーザーが更新ボタンをクリックしなくても、のdivコンテナを更新したい....

は、どのように私はjQueryのページ全体を更新せず、私のボタン2秒ごとにクリックしているのですか?またはこれを行うためのよりよい方法がありますか?

+0

setIntervalを使用してコールバックでwebserviceを呼び出してみましたか? – kinakuta

答えて

3

あなたは2秒ごとに関数を実行するためにsetIntervalを使用することができます。

その関数への各呼び出しの間に一定の時間遅延して、繰り返し関数を呼び出します

次に、呼び出された関数でボタンのクリックハンドラを呼び出します。理想的には$x.click()といっしょにクリックハンドラを直接呼び出すことができます。 setTimeoutを使用して

は良いアイデアかもしれません:

は、指定した遅延の後にコードスニペットや関数を実行します。

コールバック関数はクリックハンドラを呼び出し、終了すると再度setTimeoutを呼び出して自分自身をトリガします。このアプローチは、あなたのタイムイベントがお互いに溢れないようにします。すべてのコードはあなたのものなので、$.ajax成功とエラーのコールバック(またはおそらくcompleteコールバック)がタイマーを再開できるように再構成することができます。

+0

setTimeoutのアイデアは良いものです。 – kinakuta

0

これは、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を配置します。

+0

.Ajaxは何をしますか? SetTimeoutはタイムアウトしていないようですか? – 001

+0

私はAJAXを使ってデータを収集していると仮定していました。そうでない場合は、その部分を無視してください。 – Kranu

4

あなたは時間のすべての一定期間後に機能を呼び出すためのsetIntervalを使用することができます。

setInterval(function(){ 
    $("#myBtn").click(); 
},2000); 

これは2秒ごとにmyBtnです要素のクリックイベントを呼び出します。

ajaxリクエストを送信する場合、間隔よりも応答を受信するまでに時間がかかることがあります。これはいくつかの問題を引き起こすかもしれません。代わりに再帰呼び出しを使用することを検討してください。(ajaxコールバック関数からのclick関数の呼び出し)

+0

私はこれを試して、それは動作していないようでしたか? <スクリプトSRC = "http://code.jquery.com/jquery-latest.js"> 001

+0

何か問題がありますか? – Headshota

+1

あなたが参照しているIDなら$( 'mybutton')を参照してください$( '#mybutton') – Headshota

関連する問題