ajax возвращает исходный код HTML вместо String - PullRequest
0 голосов
/ 29 мая 2018

У меня есть веб-проект, все, что я хочу сделать, это отправить строку в сервлет, а затем вернуть ту же строку на страницу jsp (formList.jsp) и отобразить ее:

код javascript для отправкиСтрока:

$(document).ready(function(){

    $('#submit').click(function() {
        var value = $('#val').val();
        $.ajax({
            type:'POST',
            data:{value:value},
            url:'FormList',
            success:function(result){
                $('#res').text(result);
            }
        });
    });

});

Сервлет FormList doPost:

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("text/plain");
        String value = request.getParameter("value");
        response.getWriter().print(value);

}

web.xml (находится в WEB-INF):

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee                       http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">

<servlet>
<servlet-name>FormList</servlet-name>
<servlet-class>FormList</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>FormList</servlet-name>
<url-pattern>/FormList</url-pattern>
</servlet-mapping>
</web-app>

но когда я нажимаю кнопку отправки, в результате я получаю исходный HTML-код страницы formList.jsp: (<!DOCTYPE html PUBLIC ....)

* Я переопределяю метод службы в сервлете для инициализации formList.jsp

Я думаю, что doPost вообще не выполняется, пожалуйста, помогите

Ответы [ 2 ]

0 голосов
/ 29 мая 2018

Я настоятельно рекомендую проверить ответ BalusC здесь на вопрос о том, как сделать ajax с сервлетами.

Я заметил, что вы используете jquery, вы также можете создать свой запрос ajax следующим образом:

<script>
$(document).on("click", "#submit", function() { 
    var value = $('#val').val(); //get value you want to send
    var params = {value : value}; //set it as one of the parameters

    $.post("FormList", $.param(params), function(response) { //make ajax request
                 $('#res').text(response); //retrieve response and set it to #res
    });
        });
</script>

Но в любом случае, причина, по которой вы видите только html, заключается в том, что вы ничего не пишетевернуться к ответу.Вам нужно сделать это так:

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        String value = request.getParameter("value");


   response.setContentType("text/plain");  // Set content type of the response so that jQuery knows what it can expect.
    response.setCharacterEncoding("UTF-8"); // You want world domination, huh?
    response.getWriter().write(value);       // Write response body. (not print)
}
0 голосов
/ 29 мая 2018

Дайте сервлету FormList другое отображение URL.

Я полагаю, что возникла путаница при разрешении formlist.jsp и сервлета formlist.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...