JSP Ajax表单提交到Servlet的put方法不起作用

时间:2018-11-16 21:59:26

标签: jquery ajax jsp servlets xmlhttprequest

我正在通过jsp页面上的ajax函数将path参数传递到servlet doput方法。

我的带ajax的jsp页面:

    <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);
        }
            });   
       });

这是servlet方法的一部分,这给我带来了麻烦,为了节省清晰度,我没有放入整个代码。

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确认正在调用doput方法,但是request.getParameter(“ name”)打印为null。

以下是我的控制台打印出来的副本:

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

Null是表单输入的值,但应该是我输入的名称。

在将get和post方法以常规方式在动作和方法属性中以常规方式发送到Servlt时,我可以正常使用它们。

据我所知,只能通过ajax或JQuery进行放置和删除,但我似乎无法弄清楚。

我已经在邮递员上测试了该方法,并且效果很好。

我真的很坚持,任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

我想知道在声明“ form”变量时您的表单是否实际上已加载到DOM中。尝试将jQuery代码包装在DOM中准备就绪,以确保页面的所有元素都准备就绪:

$(document).ready(function() {

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

  $form.submit(function(event) {

    event.preventDefault();

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

    $.ajax({
      ...
    });

  });
}