这种问题已经出现两次了,上次出现解决后没有记得写下来,这次再次出现,又花接近半个小时解决。
实际上是因为 contentType:"application/json; charset=utf-8",和data: JSON.stringify(number),这两句话的问题第一句话application/json,将参数已json的格式传回。data: JSON.stringify(number),这句话是把参数转为json的字符串。如果我修改第一句话,将格式改成默认的键值对形式,并且对第二句话进行修改,改成{“”:“”}这样形式。根本原因是后台期望接收的格式和收到的不匹配,为什么用requestbody修饰就可以了呢?因为double是包装类,不是基础的double类型,可以做pojo接收。,如果有问题,可以在下方留言。
以下内容均未错误或者参考价值不大
首先是自己对参数,看有没有写错字母。没有写错字母的话,在页面里面用layer.msg(JSON.stringify(number))把内容输出出来看看。这样就可以确定是不是前端的问题。
我经过上两步确定不是前台的问题。然后去看后台的代码。开始以为是请求方式不对,不能用requsetmapping来接收请求,改为post后问题依旧。然后使用requestparma 好像也报个错,是什么来着。最后想起了上次是用requestbody 来传递 一个pojo对象。最后成功。估计问题在于我用了包装的double接收参数的。
代码如下:
public Body setNumber(@RequestBody Double number) {
//System.out.println(number);
if (number == null) {
return Body.BODY_400;
}
return adminService.setNumber(number);
}
$.ajax({
type:"post",
datatype:'json',
contentType:"application/json; charset=utf-8",
url:"",
data: JSON.stringify(number),
success: function(){
layer.msg('成功修改一级代理金额!')
}
});