【问题标题】:Why request.getParameter("") return null using jquery formdata为什么 request.getParameter("") 使用 jquery formdata 返回 null
【发布时间】:2018-05-20 12:21:09
【问题描述】:

当我尝试在服务器上检索我的verifyCodeActual 参数时,结果是null

String code = request.getParameter("verifyCodeActual"); // This is null

但是我在正文中发布了这个参数,正如您在 chrome 控制台数据中看到的那样:

the chrome console (data form)

这里是服务器端java代码的相关部分:

Relevant part of the server-side java code

这里是 JS ajax 查询:

    var formData = new FormData();

    var verifyCodeActual = $('#j_captcha').val();

    formData.append("verifyCodeActual", verifyCodeActual);

    $.ajax({
        url : (isEdit ? editShopUrl : registerShopUrl),
        type : 'POST',
        data : formData,
        contentType: "application/x-www-form-urlencoded",
        cache: false,
        processData: false,
        success ...
        }
    });

【问题讨论】:

  • 如果我的描述不清楚,请告诉我
  • 欢迎来到 Stack Overflow!您能否添加 Java 代码的相关部分?而不是 tyhe 图像。
  • 我在使用 FormData 对象方面做得并不多,但如果我读到的内容是正确的,那么服务器接收的 JSON 结构是不是更像 {"form": { "verifyCodeActual":"somevalue"}, "args":{}, etc} 表示您需要先获取 form 值,然后获取 verifyCodeActual 从那?
  • 第一次使用formData,不知道怎么获取表单值或属性

标签: java spring servlets request


【解决方案1】:

我怀疑这与您的 java 代码有关,它甚至看起来不像一个 servlet。你那里没有 doPost 方法。你用的是什么IDE?

你的 servlet 应该是这样的:

@WebServlet("/modifyShop")
public class ModifyShop extends HttpServlet {
    private static final long serialVersionUID = 1L;

    public ModifyShop() {
        super();
    }

    protected void doPost(HttpServletRequest request,HttpServletResponse response){

        String code = request.getParameter("verifyCodeActual");
        System.out.println(code);

    }

}

此外,由于您使用的是 Jquery,因此您可以使用 Jquery 创建通常更简单的 ajax 方法。有许多不同的方式可以使用 Jquery 发送 ajax 请求,我强烈建议您在这里查看 BalusC 关于how to use Servlets and Ajax 的答案。

这是一个您可以手动执行的示例:

var verifyCodeActual = $('#j_captcha').val();
var params = {
    verifyCodeActual: verifyCodeActual
};

$.post("modifyShop", $.param(params), function(response) {
   //handle response here if you have any
});

【讨论】:

  • 感谢您的回答,我会尝试修改我的js代码。我的 IDE 是 intellij IDEA,我使用 spring 而不是 servlet
  • 啊,这可以解释为什么您的 servlet 看起来不像普通的 servlet。
【解决方案2】:

这对你有帮助

客户

$.ajax({
    url : (isEdit ? editShopUrl : registerShopUrl),
    type : 'POST',
    data : {
        verifyCodeActual : $('#j_captcha').val()
    },
    contentType: "application/x-www-form-urlencoded",
    cache: false,
    processData: false,
    success ...
    }
});

控制器

@RequestMapping(value = "/modifyshop", method = RequestMethod.POST)
public @ResponseBody Map<String, Object> modifyShop(@RequestBody Object verifyCodeActual) throws Exception {

        System.out.println(verifyCodeActual);
}

【讨论】:

  • 感谢您的回答,我更改代码后发生 HTTP 状态 415
  • 能不能在ajax中添加dataType: 'json' 然后再试一下
猜你喜欢
  • 1970-01-01
  • 2015-10-10
  • 2012-05-04
  • 2012-01-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-21
  • 2023-03-20
相关资源
最近更新 更多