web-dev-qa-db-ja.com

タイマー付きのJquery / Ajax呼び出し

データベースから行をエコーアウトするphpページがあります。 30秒ごとにjquery/ajax経由で呼び出したいです。しかし、フォームを介してレコードを追加する場合、フォームが送信されるとすぐにページを呼び出して結果を更新するために、いつでもページを呼び出すことができるようにしたいです。誰かが私を正しい方向に向けたり、いくつかのベースコードを提供して、これを理解しようとすることができますか? jquery/ajaxにはまだ非常に新しい。

42
John

タイマーに何かを設定する場合は、JavaScriptのsetTimeoutまたはsetIntervalメソッドを使用できます。

_setTimeout ( expression, timeout );
setInterval ( expression, interval );
_

ここで、expressionは関数であり、timeoutintervalはミリ秒の整数です。 setTimeoutはタイマーを1回実行し、expressionを1回実行しますが、setIntervalはexpressionが通過するたびにintervalを実行します。

したがって、あなたの場合、次のように動作します:

_setInterval(function() {
    //call $.ajax here
}, 5000); //5 seconds
_

Ajaxに関する限り、jQueryの ajax() method を参照してください。インターバルを実行する場合、コードの他の場所から同じajax()を呼び出すことを妨げるものは何もありません。


ユーザーがフォームの送信を開始するまで30秒ごとに間隔を実行し、その後新しい間隔を作成する場合は、次のことも可能です。

setInterval()は、間隔のIDである整数を返します。

_var id = setInterval(function() {
    //call $.ajax here
}, 30000); // 30 seconds
_

そのIDを変数に保存すると、clearInterval(id)を呼び出して進行を停止できます。

次に、ajaxフォームの送信を完了した後、setInterval()呼び出しを再インスタンス化できます。

69
treeface