request.getParameter在ajax调用中返回null

时间:2018-06-04 12:50:02

标签: jquery ajax servlets servlet-filters

我正在使用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
}

如何解决?

1 个答案:

答案 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,就像我的例子一样,看看是否有帮助。