Почему innerHTML не работает после того, как сервлет публикует ответ? - PullRequest
0 голосов
/ 10 февраля 2019

Я хочу, чтобы ответ от сервлета был записан на странице jsp.Я использую 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 содержание не изменяется с помощью javascriptхотя сервлет пишет ответ.что я тут не так делаю?

1 Ответ

0 голосов
/ 10 февраля 2019

Необходимо запретить процесс отправки формы по умолчанию, иначе страница перезагрузится

Попробуйте:

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