Невозможно передать данные из JSP в сервлет с помощью JQuery

Я пытаюсь отправить некоторые данные из JSP в сервлет, используя JQuery/Ajax. Ниже приведены важные элементы моего файла JSP.

script src="http://code.jquery.com/jquery-latest.min.js"></script>
<script>
   var form = $('#customItemForm');
   form.submit(function () {

    $.ajax({
        type: form.attr('method'),
        url: form.attr('action'),
        data: form.serialize(),
        success: function (data) {


        }
    });

    return false;
});
</script>

<!--add custom item -->

<div class="modal fade" id="customItemModel" tabindex="-1" role="dialog" aria-labelledby="basicModal" aria-hidden="true">
  <div class="modal-dialog">
    <div class="modal-content">
      <div class="modal-header"> <a href="#" data-dismiss="modal"> <img src="images/arrow-back-512.png"  width="30px" height="30px"> <small>Back</small></a> <span id="myModalLabel" style="margin-left:20px;"><font size="+2"><b>Add Custom Item</b></font></span> </div>
      <div class="modal-body">
          <form class="form-horizontal" name="customItemForm" method="post" action="PastSurgicalCustomItem">
        <fieldset id="modal_form">

          <!-- Text input-->
          <div class="form-group">
            <label class="col-md-1 control-label" for="textinput">Name</label>
            <div class="col-md-8">
              <input id="customName" name="customName" type="text" placeholder="" class="form-control input-md">
            </div>
          </div>


          <div class="modal-footer">
              <input type="submit" id="additional" class="btn btn-primary" data-dismiss="modal" value="Submit">
            <button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
          </div>
        </fieldset>
      </form>
    </div>
  </div>
</div>

<!-- /add custom item --> 

Ниже приведен класс сервлета

import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class PastSurgicalCustomItem extends HttpServlet {


    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();

            String customName = request.getParameter("customName");
            System.out.println(customName);

    }

    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
    /**
     * Handles the HTTP <code>GET</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /**
     * Handles the HTTP <code>POST</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /**
     * Returns a short description of the servlet.
     *
     * @return a String containing servlet description
     */
    @Override
    public String getServletInfo() {
        return "Short description";
    }// </editor-fold>

}

Однако сервлет не печатает значение, что означает, что JQuery ничего не передал. Что я здесь сделал не так?


person JustCause    schedule 23.02.2015    source источник
comment
Вы выбираете свою форму по идентификатору, когда вы должны выбирать ее по имени $('form[name=customItemForm]'). Или дайте форме идентификатор.   -  person David Maes    schedule 23.02.2015
comment
@DavidMaes: Ничего хорошего.   -  person JustCause    schedule 23.02.2015


Ответы (1)


Установите точку останова в методе doGet и пройдитесь по коду, чтобы увидеть, не выполняется ли он вообще или выполняется, но вызывает исключение.

Кроме того, вы должны отслеживать свой вызов AJAX в браузере (например, просматривая сетевые подключения в представлении разработчика, доступном во всех современных браузерах) и просматривать возвращаемый заголовок и содержимое вызова AJAX.

person Sebastian P.    schedule 23.02.2015
comment
метод post, поэтому будет вызван doPost. - person Prashant; 23.02.2015
comment
jQuery по умолчанию использует запросы GET для AJAX. - person Sebastian P.; 23.02.2015
comment
я получил это, но он указал метод публикации. - person Prashant; 23.02.2015
comment
Ах я вижу. Как уже сказал Дэвид Мэйс, правильным средством доступа к форме является $('form[name=customItemForm]'), это может быть основной проблемой здесь. - person Sebastian P.; 23.02.2015