request.getParameter 在 ajax 调用中返回 null



我正在使用jquery进行ajax调用。

$.ajax({
type: "POST",
url: "/test",
data: {"mykey":"test value"},
success: function(appSubFtrResult){
/**/
},
error: function(){
/**/
}
});

在 servlet/filter 中,我无法使用返回 null 的request.getparameter("mykey");获取值。相反,如果我使用request.getParameterNames()并像下面这样迭代,我能够获得所有数据及其值。

System.out.println(request.getParameter("mykey")); // returns null
Enumeration<String> params = request.getParameterNames();
while(params.hasMoreElements()){
String name = params.nextElement();
String value = request.getParameter(name);
System.out.println("::Request Params:: " + name + " = " + value);   //prints ::Request Params:: mykey = test value
}

如何解决?

我认为问题可能出在这里:

data: {"mykey":"test value"},

您无需将参数名称放在引号中:

data: {mykey:"test value"},

然后在您的 servlet 中尝试:

String key = request.getParameter("mykey");

另外值得一提的是,你可以用jquery(更少的行(像这样做你的ajax:

var params = {mykey: "test value"};
$.post("/test", $.param(params), function(response) {
// handle response here if you have one
});

编辑:

我刚刚测试了您的代码,并且能够毫无问题地获取参数(在 chrome 中(。因此,参数名称周围的引号应该不会有所不同。因此,请尝试像我的示例一样以不同的方式执行ajax,看看是否有帮助。

最新更新