【问题标题】:jQuery AJAX GET to a Servlet doesn't show the JSP page - instead returns with HTML code对 Servlet 的 jQuery AJAX GET 不显示 JSP 页面 - 而是返回 HTML 代码
【发布时间】:2014-05-06 03:06:40
【问题描述】:

我知道我在做一些愚蠢和错误的事情,但我想不通。请帮忙。

我正在使用带有 JQuery 的 Apache Tomcat Servlet 7。

在我的网页上,当我单击一个按钮时,将对我的 servlet URL 进行 Jquery GET 调用。 servlet 在接收到数据(JSON 格式)后,处理数据并创建一些结果参数。然后 servlet 将这些参数传递给 JSP 文件以加载 JSP 页面。所以总而言之,当用户点击一个按钮时,在 servlet 上进行处理并加载结果 JSP 页面。

问题是,当我从按钮进行 Jquery GET 调用时,没有加载任何结果页面。相反,当我执行 console.log(request) 时,我会看到呈现的 JSP 页面的整个 html 内容。

这是我在单击按钮时在 Web 应用程序上的代码:

var request;
if (request) {
   request.abort();
}
request = $.ajax({
    cache: false,
    type: 'GET',
    url:'http://<MyServerAddress>:8080/<App>/<Servlet>',
     data: {
        'queryType' : 'clickButton',
        'data' : JSON.stringify(buttonPageInfo)
         },
}); 
request.done(function (response, textStatus, jqXHR){
    console.log("Response: " + JSON.stringify(response)); 
        // shows the entire html content of the processed JSP page that I want to load
     });

这是服务器端的代码:

protected void doGet(HttpServletRequest request, HttpServletResponse response) {
   processData(request, response);
}

protected void processData(request, response) {
 /* Do some processing on the data and come up with results */
 RequestDispatcher rd = getServletContext().getRequestDispatcher("/myJSPPage.jsp");
 rd.forward(request, response); 
}

rd.forward(request, response) 之后,我希望我的网页转发到 myJSPPage.jsp 以显示结果,但没有任何反应。相反,console.log("Response: " + JSON.stringify(response)); 显示了 JSP 页面的整个 HTML 内容以及我期望的结果。

我做错了什么?

【问题讨论】:

  • 我不确定,但我认为问题在于您的 DOM 中必须有一些占位符才能使用您从请求中获得的 HTML 进行更新。通常,这就是 AJAX 的用途。检索一小部分数据以在您的 DOM 中更新。
  • 您想在用户点击按钮后显示一个新页面吗?如果是,您不需要 ajax,只需致电 windows.open()
  • @BetaRide 你是对的。用一双清新的眼睛和轻松的心态,我意识到我不需要进行 AJAX 调用。只需对我的 Web 应用程序 (myserver:8080/servlet?data=var1&data=var2) 进行简单的 API 调用即可。
  • 所以我添加了评论作为答案:-)。

标签: java jquery jsp servlets


【解决方案1】:

您正在获取 HTML,因为您正在转发到 JSP。

只需删除 RequestDispatcher 内容并确保您已刷新响应数据。

【讨论】:

    【解决方案2】:

    如果您想进行正常的页面调用,只需调用windows.open()。不需要为此使用 ajax。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-06-06
      • 1970-01-01
      • 2014-02-05
      • 1970-01-01
      • 2023-03-19
      • 2015-03-25
      • 1970-01-01
      相关资源
      最近更新 更多