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

标签 java ajax

我有一个带有 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();

关于java - 我需要更改网页的内容而不刷新服务器端发生更改的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55809634/

相关文章:

javascript - 按tab键时java脚本表单验证

javascript - 引用错误: _spPageContextInfo is not defined

javascript - 检索 JSON 会引发错误 : Unexpected token :

javascript - jQuery - 从另一个页面加载内容 - 仅一次

javascript - 无法读取ajax中未定义的属性 'length'

java - 将 UDP 从 Java 发送到 Python 不起作用

java - 如何使用 PrintWriter 测试方法?

java - 如何在微服务的多个实例之间维护 SseEmitters 列表?

java - 为不同的员工更新 managerId

java - 如何在spring-boot中从application.properties创建配置类?