ajax json没有将值传递给spring controller

时间:2015-10-13 10:21:40

标签: jquery json ajax spring spring-mvc

我使用ajax将Json对象发送到控制器。

$.ajax({
         url:  "/cart/add.json",
         type: "POST",
         data:{ 'json': event.data},          

    });  

和控制器

@RequestMapping(value = "/cart/add.json", method = RequestMethod.POST)
public String addToCartJson(@RequestParam("json") final String jsonString, final Model model,
        final BindingResult bindingErrors)

我收到400个错误请求。

  

错误:“HTTP状态400 - 必需的字符串参数'json'不是   本“

任何输入? 谢谢,提前

2 个答案:

答案 0 :(得分:2)

服务器端想要字符串参数但客户端发送到对象。 JSON.stringfy将用于将对象转换为string。要绑定json,您需要创建一个包含所有参数的类,并使用@RequestBody注释而不是@RequestParam。

Ajax方法正在重写:

$.ajax({
         url:  "/cart/add.json",
         type: "POST",
         processData: false,
          data:  JSON.stringify({
               "json":  event.data
      }),  

控制器行动部分:

@RequestMapping(value = "/cart/add", method = RequestMethod.POST)
    public void addEvent(@RequestBody EventData eventData){ 
    }

答案 1 :(得分:1)

您没有传递参数json,您可以尝试下面的内容;​​

$.ajax({
            url:  "/cart/add.json",
            type: "POST",
            data:{ 'json=':event.data}
        });