0

我是 jQuery 新手,当结果来自我的 java servlet 时,我很难让我的页面不断更新。我想在网页上设置一个计时器效果,因为新的时间值来自 servlet。

在我的网页上,我有这样的东西:

<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>

在我的 servlet 计时器中,我有一个 while 循环,它使用 response.getWriter() 为 30 次迭代写入新的时间值:

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

问题是当我加载页面时,在 30 次迭代完成之前,没有任何内容附加到页面上。有没有办法让每次迭代打印出来显示在页面上?

谢谢

4

1 回答 1

1

out.flush() 会将缓冲区中的任何内容写入浏览器。

请记住,如果您有一个长时间运行的服务器操作,您可能需要一个更好的机制,以便服务器知道客户端何时离开/停止操作,以便服务器也可以停止处理。此外,通过利用 javascript,您无需导航到另一个页面,可以获得更好的用户体验

通常,javascript 计时器/轮询用于获取操作的状态(在服务器上,您可能让操作在单独的线程上运行 - 这也可以作为服务器的保持活动消息 - 如果服务器没有收到一个活着的,它可能想停止处理以提高效率)

长轮询和 html5 网络套接字(您需要服务器支持网络套接字)是其他方法 -

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

于 2012-04-04T01:46:18.990 回答