Ajax向Java后台发送Json数据,默认请求的ContentType是application/x-www-form-urlencoded;charset=UTF-8 ,导致后台接收到的Json数据末尾多一个“=”。
解决方法:将参数 contentType 的值改成 application/json; charset=utf-8,
var value = obj.value ,data = obj.data ,field = obj.field; var json = {"id":data.id}; json[field] = value; var param = JSON.stringify(json); $.ajax({ type: "POST", url: '/student/updateStudentInfo', data: param, /* contentType: application/x-www-form-urlencoded;charset=UTF-8 */ contentType: "application/json; charset=utf-8",//此处不能省略 success: function (data) { if (data.code == 1) { layer.msg('修改成功!', {icon: 1, time: 2000, shade: 0.2}); } else { layer.msg('修改失败!', {icon: 2, time: 3000, shade: 0.2}); } } })
网上解释:
application/x-www-form-urlencoded;charset=UTF-8是一种键值对结构,也就是类似这样的:
name=tim&age=20
多出来的等号其实就是因为把内容作为key了,而value是空着的,所以传输数据带上正确的content-type才是对的,对框架更友好。