ajax传过来的对象只能以string接收不能以json接收

前端写了个ajax

 <script>
    test.onclick=function () {
        var user = {
            "productId":1000,
            "productQuantity":1
        };

        alert(11);
        $.ajax({
            type: "POST",
            dataType:"json",
            async:"true",
            contentType: 'application/json',
            url: "/campus_ordering_system/master/buycar/list",
            data: JSON.stringify(user) ,
            success:function(data){
                //TODO
                alert(1);
            },
            error:function () {
                alert(user.productId);
                alert(2);
            }
        })


    }

</script>

这里用string能获取到user对象,不过是以{"productId":1000,"productQuantity":1}的字符串出来的,换成JSONObject的话接收到的值就为null

  @RequestMapping("/list")
    @ResponseBody
    public ModelAndView  list(HttpServletRequest request,@RequestBody String params){
        HttpSession session=request.getSession();
        System.out.println("传出:"+params);
        System.out.println("传出:"+request.getParameter("productId"));
        ProductInfo productInfo=productInfoService.findByOneProductInfo("1000");
        session.setAttribute("data",productInfo);

        return new ModelAndView("buycar/buycar");
    }
阅读 3.2k
3 个回答

AJAX 不要用 JSON 方式传输,不然的话请解析 JSON

建一个和前端相同的对象,可以直接映射

建议你在后台建一个 User 类,包括productIdproductQuantity 属性,使用 @RequestBody User user 形式,把前端传来的值映射到 user 的属性中。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题