【问题标题】:request.getParameter returns null in ajax callrequest.getParameter 在 ajax 调用中返回 null
【发布时间】:2018-11-13 19:36:13
【问题描述】:

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

如何解决?

【问题讨论】:

    标签: jquery ajax servlets servlet-filters


    【解决方案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,看看是否有帮助。

    【讨论】:

      猜你喜欢
      • 2013-01-18
      • 1970-01-01
      • 2021-12-10
      • 1970-01-01
      • 2021-01-27
      • 2014-09-21
      • 2012-05-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多