Servlet从ajax接收空请求

时间:2014-06-10 12:57:00

标签: jquery ajax servlets request

我有一个javascript程序试图将AJAX请求发送到Java HTTPServlet。 servlet正在侦听指定的模式“/ users”并返回XML。我的问题是当请求被发送到servlet时,请求体是空的。我知道我没有使用任何跨域的东西(一切都驻留在同一个服务器上运行的同一个域)。这是我的AJAX代码:

    var data = ($"form").serialize();
    $.ajax({
         url : "../users",
         data : data,
         dataType : "xml",
         type : "PUT",
         success : function(data){ ... },
         error : function(data){ ... }
    });

序列化表单返回 用户名= “用户名” &安培;密码=安培;电子邮件=

和我的servlet

    @Override
    public void onPut(HTTPServletRequest req, HTTPServletResponse resp){
         String username = req.getParameter("username");
         ...
    }

用户名最终为空

我知道请求至少是被发送的,因为我从servlet得到了响应,但是当我在servlet中运行程序调试器时,来自请求主体的传入参数总是为空。

[更新] 当我修改代码以通过PUT发送JSON或XML主体时,请求似乎正在处理。奇怪的是,除非我使用POST或GET,否则序列化表单似乎不会通过。

1 个答案:

答案 0 :(得分:0)

serialize是一种方法。

$.ajax({
     url : "../users",
     data : $("#form").serialize(),
     dataType : "xml",
     type : "PUT",
     success : function(data){ ... },
     error : function(data){ ... }
});

然后在您的servlet中,尝试更改您的代码,如下所示:

String username = req.getParameterValues("username");