我需要更改网页的内容,而不刷新服务器端发生更改的位置

  • 本文关键字:刷新 服务器端 位置 网页 java ajax
  • 更新时间 :
  • 英文 :


我有一个带有java的Web应用程序,它可以接收来自客户端的请求,处理请求,然后将结果发送回客户端。我想添加一个图形界面,该界面将显示有关每个请求到达后的请求,过程和结果的信息。我想在不重新加载页面的情况下执行此操作,服务器可以在短时间内收到大量请求,因此重新加载页面不是一个好的解决方案。我尝试使用 AJAX 执行此操作,但更改是在客户端引发事件之后,例如单击按钮。我希望事件在服务器端,我的事件需要是新请求的到达。尝试使用 setInterval,但结果不是我期望的,就像 10 个请求中只显示一个请求 这是设置间隔代码:

setInterval(function() { 
$.get("log", function(responseText) {
$("#container").append(responseText + "<br>");
});
}, 10);

log 是 servlet 的 URL,它提供有关请求的信息 log 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();

最新更新