我需要更改网页的内容而不刷新服务器端发生更改的位置
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我需要更改网页的内容而不刷新服务器端发生更改的位置相关的知识,希望对你有一定的参考价值。
我有一个带有java的Web应用程序,它接收来自客户端的请求,处理请求然后将结果发送回客户端。我想添加一个图形界面,它将在每个请求到达后显示有关请求,进程和结果的信息。我希望在没有重新加载页面的情况下执行此操作,服务器可以在短时间内收到大量请求,因此重新加载页面不是一个好的解决方案。我尝试过使用AJAX,但是更改是在客户端发生的事件之后,例如点击按钮。我希望事件在服务器端,我的事件需要是新请求的到来。尝试使用setInterval,但结果不是我所期望的,就像只有一个请求显示在10中这是setInterval代码:
setInterval(function()
$.get("log", function(responseText)
$("#container").append(responseText + "<br>");
);
, 10);
log是servlet的URL,它提供有关日志servlet的doGet方法的请求的信息:
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
response.setContentType("text/plain");
response.setCharacterEncoding("UTF-8");
response.getWriter().write(requestInfo);
每次请求到达时,我都会开始在requestInfo中放入信息
答案
如果要不断检查状态,则必须调用ajax函数。如果您希望通过推送获得通知,则必须使用websockets。
function checkLog()
$.get("log", function(responseText)
var $notFinished = true;
console.log('fetch from server')
$("#container").append(responseText + "<br>");
// do some checks to determine server has finished, set notFinished to false if it is your last ajax request
...
if($notFinished)
// recall the function in 10 seconds for status check
setInterval(function()
checkLog();
, 10000);
);
// call the function the first time
checkLog();
以上是关于我需要更改网页的内容而不刷新服务器端发生更改的位置的主要内容,如果未能解决你的问题,请参考以下文章