我正在使用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
}
如何解决?
答案 0 :(得分:-1)
我认为问题可能在这里:
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,就像我的例子一样,看看是否有帮助。