2

ジョブのキューを含むデータベース テーブルがあります。別のプログラムがこれらのジョブを処理します。ユーザーがキューの進行状況を確認できる Web ページを提供したいと考えています。テーブルをクエリして JSON 形式で返すサーバー側のスクリプトは問題ありません。

jQuery とPeriodicalUpdater pluginについていくつか読んだことがあります。このプラグインを使用してビジュアル キューを作成することが可能かどうか疑問に思っています (基本的な説明は、キュー内のエントリごとに行を持つ 1 列のテーブルです)。完了したジョブは次のジョブで削除されます。ポーリングする時間。私が言うように、サーバー側のスクリプトは問題ではありません。私はこの種の UI/アニメーションについて理解できません。さらに読むためのヒントをいただければ幸いです。または、間違ったツリーを完全に吠えている場合は、私にもお知らせください。

前もって感謝します

4

2 に答える 2

8

私はPeriodicalUpdaterプラグインに精通していませんが、私があなたなら、JavaScriptの「setTimeout」関数を使用することを検討します。setTimeoutを使用すると、指定した間隔で関数を実行できます。

あなたの状況に関連する例については、ここを参照してください:

<script type="text/javascript">

setTimeout("updateTable();", 5000);

function updateTable()
{
     $.post("/your_script.php", {}, function(result) {

          $("#my_table").html(result);

     });
     setTimeout("updateTable", 5000);
}

</script>

注:1秒には1000ミリ秒があるため、関数は5秒ごとに起動するように設計されています。

加えて...

キューテーブルの各エントリには一意のIDが関連付けられていると想定しています。メインのHTMLページ内で、次のように表を印刷します。

<table>
<tr id='q1'><td>Queue Item 1</td></tr>
<tr id='q2'><td>Queue Item 2</td></tr>
<tr id='q3'><td>Queue Item 3</td></tr>
<tr id='q4'><td>Queue Item 4</td></tr>
<tr id='q5'><td>Queue Item 5</td></tr>
</table>

つまり、キューテーブルの各行に、テーブルのエントリと同じIDを割り当てます。次に、AJAX呼び出しが結果を返すときに、キュー項目のいずれかが終了したかどうかを確認できます。持っている場合は、次のようなことができます。

$("#q1").fadeOut("fast");
于 2010-02-02T18:54:51.307 に答える
0

長いポーリングは必要ありません。setInterval を使用してキューを更新するには、定期的な ajax 呼び出しが必要です。サーバーを呼び出すたびに、既存のキュー全体を取得し、現在のキューと比較して、存在しないキューを削除します。

<script type="text/javascript">
var old_result = {};
setInterval(function(){
     $.post(YOUR_URL, {}, function(result) {
       //compare result with old_result
       //remove missing elements using an animation on that row
       //set old_result to result
     });
}), 5000);

</script>
于 2010-02-02T19:22:31.397 に答える