Java Servlet 总是在 AJAX GET 请求 SERVLET 时返回调用页面的 HTML 代码

Java Servlet always returns HTML code of calling page, upon AJAX GET Request to Servlet

本文关键字:调用 返回 代码 HTML SERVLET Servlet AJAX 请求 GET Java      更新时间:2023-09-26

我在Web应用程序的后端使用Tomcat 7 Java Servlets。我面临的问题是,当我使用 jQuery Ajax 执行 HTTP GET 请求时,HttpServletResponse 总是返回调用页面的 HTML 正文,而不是返回所需的数据。

j查询代码:

            function perform_ajax(view_name) {
                $(function() {
                    var url = 'get-view-data-by-view-name';
                    $.ajax({
                        method: 'GET',
                        data: {view_name: JSON.stringify(view_name)},
                        beforeSend: function() {
                            alert(view_name);
                        },
                        success: function(data) {
                            alert(data);
                            //console.log(data);
                        },
                        error: function(xhr) {
                            alert("Error: asdasd");
                        }
                    });
                });
            }

Servlet 代码:

public void doGet (HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    String x = req.getParameter("view_name");
    resp.setContentType("application/json");
    resp.setCharacterEncoding("UTF-8");
    resp.getWriter().write(x);
}

即使我将 Servlet 代码的最后一行替换为:

resp.getWriter().write("aaaa"); 注释掉 doGet 函数中的其他所有内容,Servlet 仍然返回调用页面的 Html 正文。

我已经被困在这个上面几个小时了。经历了许多SO问题,尝试了各种方法,例如使用不同的MIME类型,例如普通,但我得到的回应只是呼叫者页面的Html代码。请帮助我找到出错的地方并解决此问题。

我忘了在 ajax 函数调用中传递 url;不知道我怎么会错过它!

            function perform_ajax(view_name) {
                $(function() {
                    var url = 'get-view-data-by-view-name';
                    $.ajax({
                        url: url, // + Added URL to ajax call
                        method: 'GET',
                        data: {view_name: JSON.stringify(view_name)},
                        beforeSend: function() {
                            alert(view_name);
                        },
                        success: function(data) {
                            alert(data);
                            //console.log(data);
                        },
                        error: function(xhr) {
                            alert("Error: asdasd");
                        }
                    });
                });
            }

检查标头,返回获取请求。它必须具有应用程序/json。但浏览器可能会将文本解释为 html。

使用 curl 检查工作。

并返回 JSON 对象而不是字符串,例如:

    ...
    response.setContentType("application/json");
    String x = req.getParameter("view_name");
    PrintWriter out = response.getWriter();
    JSONObject obj = new JSONObject();
    obj.put("view_name", x);
    out.print(obj);
    ...