【问题标题】:Why does innerHTML does not work after servlet is posting a response?为什么在 servlet 发布响应后 innerHTML 不起作用?
【发布时间】:2019-02-10 13:20:48
【问题描述】:

我希望在 jsp 页面中捕获来自 servlet 的响应。我为此使用javascript。代码如下:

TestServlet.java:

    package com.test;

    import java.io.IOException;
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;

@WebServlet("/TestServlet")
public class TestServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        response.getWriter().append("Served at: ").append(request.getContextPath());
        String testString = "Load Check";
        //request.setAttribute("test", testString);
        //request.getRequestDispatcher("").include(request, response);
        response.getWriter().write("Test Success");
    }

    /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        doGet(request, response);
    }

}

Test.jsp

    <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="ISO-8859-1">
    <title>Test JSP</title>
    </head>
    <body>
    <script type="text/javascript">
      function callServeltAndGetResponse(){
    var servlet = new XMLHttpRequest();
    servlet.onreadystatechange = function(){
        var servletResponse = servlet.responseText;
        document.getElementById("response").innerHTML = servletResponse;
    }
    servlet.open('GET','TestServlet',true);
}

    </script>
    <form onSubmit="javascript:callServletAndGetResponse()">
    <input type=submit>
    </form>
    <div id="response"></div>
    </body>
    </html> 

在上面的jsp页面中,虽然servlet写了一个响应,但javascript并没有改变div的内容。我在这里做错了什么?

【问题讨论】:

  • 你错过了这个servlet.send();

标签: javascript jsp servlets httpresponse


【解决方案1】:

您需要阻止默认的表单提交过程,否则页面将重新加载

试试:

<form onSubmit="javascript:callServletAndGetResponse(); return false">

【讨论】:

  • 仍然没有在jsp上加载响应
  • 检查浏览器开发工具网络中的实际请求以检查状态(200)和预期响应
猜你喜欢
  • 1970-01-01
  • 2013-02-13
  • 1970-01-01
  • 1970-01-01
  • 2014-11-07
  • 1970-01-01
  • 2020-12-02
  • 2019-10-18
  • 1970-01-01
相关资源
最近更新 更多