我正在使用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,看看是否有帮助。