getParamteter не работает с текстовым элементом в ajax-вызове сервлета Java - PullRequest
0 голосов
/ 04 февраля 2019

Привет, у меня есть имя и текстовые поля pw с кнопкой отправки.Проблема в том, что любое значение, которое я ввожу, не принимается сервлетом.Я не знаю, если проблема в том, когда JQUERY пытается получить значение элемента HTML или сервлет не может получить значения из вызова ajax.

У меня есть сервлет, который распечатывает request.getParameters, и онпродолжает печатать ноль.Я приложил соответствующие фрагменты кода html и js и кода сервлета, чтобы проверить, принимаются ли параметры.

HTML-код:

<section id="customer_business">
        <div class="container">
            <div class="row">
                <div class="col-sm-6 col-xs-12 customer">
                    <div class="hover ehover3">
                        <img class="img-responsive" src="images/p13.jpg" 
    alt="">
                        <div class="overlay">
                            <div class="row">
                                <div class="col-sm-6 col-xs-12">
                                    <div class="form-group"> 
                                        <input type="text" id="cus_name" 
   class="form-control" maxlength="10" placeholder="Full Name" required>
                                    </div>
                                </div>
                                <div class="col-sm-6 col-xs-12">
                                    <div class="form-group"> 
                                        <input id="cus_password" 
    type="password" class="form-control" maxlength="22" 
    placeholder="Password" required>
                                    </div>
                                </div>
                            </div>

                            <div class="col-sm-2 col-xs-12">

                            </div>

                            <div class="col-sm-8 col-xs-12">
                                <div class="col-sm-6 col-xs-6">
                                    <a href="custreg.html"><button 
    id="cus_register" class="info" type="button">Register</button></a>
                                </div>
                                <div class="col-sm-6 col-xs-6">
                                    <a href="#"><button id="cus_login" 
class="info" type="button">Login</button></a>



                                </div>

код JavaScript (выполняется в документе.функция готовности):

$('#cus_login').click(function() {
    $.ajax({
        url: 'LoginServlet',
        type: 'POST',
        contentType: 'application/json',
        dataType: 'json',
        data: JSON.stringify({
            username : $("#cus_name").text(), 
            pw : $("#cus_password").text(), 
            method : "customer"
        }),
        success: function(result) {
            var obj = result;
            if(result.status == true) {
                alert("Success!");
            }
            else{
                alert("Login failure, please check and try again");
            }
        }
    });
});

И, наконец, код сервлета для проверки, пересылаются ли значения:

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    System.out.println("Servlet reached successfully");

    RequestDispatcher custdispatch = 
 request.getRequestDispatcher("CustProfile.html");
    RequestDispatcher busdispatch = 
 request.getRequestDispatcher("BusEntry.html");

    boolean isValid = false;
    String method = request.getParameter("method");
    String username = request.getParameter("username");
    String pw = request.getParameter("pw");
    System.out.println(method + username + pw);

Я продолжаю получать 3 нулевых значения.Должно быть проблема между ajax и servlet.Если вы посмотрите на атрибут метода, он не берется из пользовательского ввода или любого html-элемента, он жестко запрограммирован, но даже он возвращает нуль в сервлете.

1 Ответ

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

Ответ: getVal () действительно правильный вариант для использования.Проблема была не в том, что js забрал из html.Проблема заключалась в том, что сервлет не собирал данные из ajax POST.Причина в том, что данные были заданы как json, но сервлет не может прочитать формат json, поэтому следующий код:

JsonObject data = new Gson().fromJson(request.getReader(), JsonObject.class);
    String method = data.get("method").getAsString();
    String username = data.get("username").getAsString();
    String pw = data.get("pw").getAsString();

переменная данных - это параметры публикации json ajax, преобразованные в объект java.

...