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

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();

以上是关于我需要更改网页的内容而不刷新服务器端发生更改的位置的主要内容,如果未能解决你的问题,请参考以下文章

ExpressJS 更改路由而不刷新

更改部分 html 页面而不刷新整个页面

每当我的 json 数据文件更改时如何刷新页面

本地主机更改而不刷新

如果您调用 watchPosition 并更改页面而不调用 clearWatch 会发生啥?

浏览器后退按钮更改动态 url 参数