0

私は jQuery を初めて使用し、Java サーブレットから結果が返されるときにページを継続的に更新するのに苦労しています。新しい時間値がサーブレットから入ってくるので、Web ページにタイマー効果が欲しいです。

私のウェブページには、次のようなものがあります。

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.js"></script> 
<script>$(document).ready(function(){$.get("/timer", function(data){$('H1').append(data);  })})(); </script>

そして、私のサーブレット タイマーには、response.getWriter() を使用して 30 回の繰り返しの新しい時間値を書き込む while ループがあります。

//this is in my doGet function
while(count <30 ){
count++;
out.println(count);
}

問題は、ページをロードすると、30回の反復が完了するまでページに何も追加されないことです。各 iteration を印刷してページに表示する方法はありますか?

ありがとう

4

1 に答える 1

1

out.flush() は、バッファーにあるものをブラウザーに書き込みます。

ただし、サーバー操作を長時間実行している場合は、サーバーが処理を停止できるように、クライアントがいつ操作を停止/停止するかをサーバーが認識できるように、より優れたメカニズムが必要になる場合があることに注意してください。また、javascript を活用することで、別のページに移動する必要がなくなり、ユーザー エクスペリエンスが向上します。

通常、操作のステータスを取得するために JavaScript タイマー/ポーリングが使用されます (サーバー上では、別のスレッドで操作を実行している場合があります。これは、サーバーへのキープアライブ メッセージとしても機能します。サーバーが受信しない場合)。 a alive, 効率化のために処理を停止する場合があります)

ロング ポーリングと html5 Web ソケット (Web ソケットのサーバーでのサポートが必要です) は、他のアプローチです。

参照: http://techoctave.com/c7/posts/60-simple-long-polling-example-with-javascript-and-jquery

于 2012-04-04T01:46:18.990 に答える