Форма JSP Ajax, отправленная в метод сервлета, не работает - PullRequest
0 голосов
/ 17 ноября 2018

У меня проблемы с получением параметра path для метода доплеровского сервлета через функцию ajax на странице jsp.

Моя страница jsp с ajax:

    <form id="user-form">
    <table>
        <tr>
            <td> User id:</td>
            <td><input type="text" name="name" id="name"/></td>
        </tr>

    </table>
    <input type="submit" value="Submit"/>
</form>



<script>

var form = $('#user-form');

form.submit(function()
{
    $.ajax({
        url: 'TestServlet',
        data: form.serialize(),
        type: 'put',
        success: function(data){ 
            console.log(data);
        }
            });   
       });

Вотчасть метода сервлета, которая доставляет мне неприятности. Я не включил весь код, чтобы сэкономить на ясности.

protected void doPut(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    //System.out.println(request);
    System.out.println(request.getParameter("name"));
    String resourceBaseURL = "http://localhost:8080/TEST/webapi/orders/";
    String requestedOrder = request.getParameter("name");
    URL url;        
    HttpURLConnection con;
    String resultInXml = "";

    System.out.println("DoPut Called");
    // try to create a connection and request XML format
    try {

        ObjectFactory objFactory = new ObjectFactory();

        Car car = objFactory.createCar();
        car.setName(requestedOrder);
        url = new URL(resourceBaseURL + requestedOrder);
        con = (HttpURLConnection) url.openConnection();
        System.out.println(url);

Когда я отправляю некоторые данные через форму, мой System.out подтверждает, что допутанметод вызывается, но request.getParameter ("name") печатается в ноль.

Ниже приведена копия распечатки моей консоли:

null
DoPut Called
http://localhost:8080/TEST/webapi/orders/null
Put

Ноль - это значение для ввода формы, но оно должно быть именем, которое я ввожу.

У меня естьметоды get и post работают нормально, так как они отправляются сервлету обычным способом в рамках действия формы и атрибутов метода.

Поместить и удалить, насколько я знаю, можно только через ajax или JQuery, которые я просто не могуКажется, я понял это.

Я проверил метод на почтальоне, и он отлично работает.

Я действительно застрял на этом, и любая помощь будет принята с благодарностью.

1 Ответ

0 голосов
/ 17 ноября 2018

Мне интересно, загружается ли ваша форма в DOM в тот момент, когда вы объявляете переменную "form". Попробуйте обернуть ваш код jquery в DOM, чтобы убедиться, что все элементы страницы готовы:

$(document).ready(function() {

  var $form = $('#user-form');

  $form.submit(function(event) {

    event.preventDefault();

    var data = $form.serialize();
    console.log(data);

    $.ajax({
      ...
    });

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