我有一个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,否则序列化表单似乎不会通过。
答案 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");