10秒后服务器响应时如何使用ajax发送请求?

Posted

技术标签:

【中文标题】10秒后服务器响应时如何使用ajax发送请求?【英文标题】:How to send a request using ajax when the server response after 10 sec? 【发布时间】:2021-05-24 11:15:35 【问题描述】:

我只想向 servlet 发送请求,并且在某些事件发生后 servlet 将发送响应 我认为我在 Ajax 中的问题是获取请求,但这里是我的 servlet


@WebServlet(name = "Servlet", value = "/Servlet")
public class Servlet extends HttpServlet implements Observer 
    private HttpServletResponse response;

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException 
        this.response = response;
        Cookie[] cookie = request.getCookies();
        //response when game start.
        int gameId = Integer.parseInt(cookie[2].getValue());
        Maze maze = register.gamePool.getGame(gameId);
        maze.getGameStatus().addObserver(this);
    
    
    @Override
    public void update(Observable o, Object arg) 
        GameStatus gameStatus = (GameStatus) o;
        if (((GameStatus) o).isGameStart()) 
            this.processResponse(gameStatus);
            o.deleteObserver(this);

        
    

    private void processResponse(GameStatus gameStatus) 
        String json = new Gson().toJson(gameStatus.isGameStart());
        try 
            if(!response.isCommitted())
            response.getWriter().write(json+"here is response in json");
         catch (IOException e) 
            e.printStackTrace();
        
    


这是我的 Ajax 请求

$(document).ready(function () 
    $.ajax(
        type: "GET",
        url: "/WNA_MazeGame_Online_war_exploded/Servlet",
        success: function (data, status) 
               alert("data:"+data+"\n");
        ,

    );
);

基本上响应将来自服务器任何时间(最多 1 分钟)。 但是当我尝试这个时,警报会立即显示为没有数据的页面!

【问题讨论】:

【参考方案1】:

您可以使用“错误”功能调试您的请求,然后尝试在控制台中记录您的请求。

 $(document).ready(function () 
        $.ajax(
            url: "/WNA_MazeGame_Online_war_exploded/Servlet",
            contentType: "application/json; charset=utf-8",
            type: "GET",
            dataType: "json", //Specify response type from server 
            success: function (result) 
                console.log("Success: " + result)
            ,
            error: function (jqXHR, exception) 
                console.log(jqXHR, exception)
            ,
        );
    );

【讨论】:

我能得到更多帮助吗 plz :) 它给了我 Object "parsererror"

以上是关于10秒后服务器响应时如何使用ajax发送请求?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用jquery监控ajax请求的进度响应

如何在laravel 5.2中控制多个ajax请求

java中如何判断发送的请求是不是得到响应

如果没有得到响应,如何在 30 秒后停止 ajax 调用? [复制]

带有json响应的jQuery ajax请求,如何?

如果服务器的响应在 10 秒后出现,则取消 axios 请求