request.getParameter () возвращает ноль при нажатии кнопки отправки - PullRequest
0 голосов
/ 01 марта 2019

Здесь я пытаюсь нажать кнопку «submitAction» после нажатия js, вызывается функция DoSubmit (), также вызывается метод doPost () сервлета, но внутри метода doPost () request.getParameter («submitAction») возвращает нульгде я ожидаю, что он должен вернуть значение кнопки «Проверить OTP» или «Повторно отправить OTP» в зависимости от того, какая кнопка нажата.

Ниже приведен код JSP:

    <html>
<body> 
<script>
   function DoSubmit()
        {
            var btn = document.getElementById("submitAction").value;
            alert("in side the DoSubmit method and OTP is  : "+myOTP+ " btn clicked: "+btn);

            $.ajax({
                type: "POST",
                url : 'myservlet',
                data : {
                    myOTP : myOTP
                },
                success : function(myOTP) {
                    $('#ajaxGetUserServletResponse').text(myOTP);
                }
            }); 
            return true;
        }
    </script>
    <form name="submitForm" action="/myservlet">
        <div id="dialog" title="Enter the OTP">
            <p id="message">Enter the One Time Password</p>
            <p id="note"> OTP code generated will be valid for 10 Mins<p>
                <input type="text" style="margin-left:10px"  valign="right" maxlength=4 size=4 id="myotp" title="OTP" name="myOTP">
                <input type="submit" name="submitAction" value="Verify OTP" onclick="DoSubmit()"/>
                <input type="submit" name="submitAction" value="Resend OTP"onclick="DoSubmit()"/>                   
                <button id="back">Back</button>         
            <div id="ajaxGetUserServletResponse" style="display: none;"></div>
        </div>
    </form>  
</body>
</html>

Класс сервлета:

@WebServlet("/myservlet") public class GetUserServlet extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String submitAction = request.getParameter("submitAction"); System.out.println(" "+submitAction); } }

1 Ответ

0 голосов
/ 01 марта 2019

Это неправильно:

  var btn = document.getElementById("submitAction").value;

Кнопки с классом "submitAction", не имеют атрибутов id ... Вы не можете передать значение кнопки, подобной этой, без передачи события.Вы можете передать его, выполнив следующее:

добавьте 'this' к функциям кнопок ввода по нажатию:

<input type="submit" name="submitAction" value="Verify OTP" onclick="DoSubmit(this)"/>

Затем в вашей функции вы можете получить значение, подобное этому:

function DoSubmit(e)
     {
         var btn = e.value;

(обязательно добавьте 'e' в скобках функции.)

Теперь вторая проблема в вашем примере заключается в том, что вы используете форму, но также делаете запрос ajax.Что именно вы хотите сделать?

Если вы хотите сделать ajax-запрос, удалите теги формы.Потому что каждый раз, когда вы нажимаете на кнопки, вы отправляете форму, и вы не хотите, чтобы это произошло, потому что это изменит страницу, на которой вы находитесь.

Ваш HTML должен выглядеть следующим образом:

<html>
<body>
<script>
function DoSubmit(e)
    {
        var btn = e.value;
        var myOTP = "123123"; //you don't define this anywhere in your example...
        alert("in side the DoSubmit method and OTP is  : "+myOTP+ " btn clicked: "+btn);


        var params = {
            myOTP : myOTP,
            submitAction : btn
        };

        $.post("myservlet", $.param(params), function(response) {
          //here you can handle the response from the servlet
          $('#ajaxGetUserServletResponse').text(myOTP);
        });
    }
</script>

    <div id="dialog" title="Enter the OTP">
        <p id="message">Enter the One Time Password</p>
        <p id="note"> OTP code generated will be valid for 10 Mins<p>
            <input type="text" style="margin-left:10px"  valign="right" maxlength=4 size=4 id="myotp" title="OTP" name="myOTP">
            <input type="submit" name="submitAction" value="Verify OTP" onclick="DoSubmit(this)"/>
            <input type="submit" name="submitAction" value="Resend OTP"onclick="DoSubmit(this)"/>
            <button id="back">Back</button>
        <div id="ajaxGetUserServletResponse" style="display: none;"></div>
    </div>

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