我想通过Ajax传递一个Pojo给Controller,但是controller接收不到数据
下面是Ajax代码片
$.ajax({
url: basePath + "update.action",
method:"post",
dataType:"json",
contentType: "application/json",
data:JSON.stringify({
cookId: $("#edit_cook_id").val,
cookName: $("#edit_cookName").val,
cookFlavor: $("#edit_cookFlavor").val,
cookRepertory: $("#edit_cookRepertory").val,
cookPrice: $("#edit_cookPrice").val,
cookType: $("#edit_cookType").val
}),
success: function (data) {
if (data > "0") {
alert("客户信息更新成功!");
} else {
alert("客户信息更新失败!");
}
window.location.reload();
},
error:function () {
alert("客户信息更新失败! ");
}
});
接下来是Controller
@RequestMapping(value = {"update"} ,method = { RequestMethod.POST })
@ResponseBody
public Long update(@RequestBody CookBook cookBook) {
System.out.println("==============================================");
System.out.println(cookBook);
Long aLong = restaurantService.updateCook(cookBook);
return aLong;
}
CookBook{cookId=0, cookName='null', cookFlavor='null', cookRepertory=0, cookPrice=0, cookType='null'}
异常是说
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE cook_id
= 0' at line 4
找了一天问题了,苦恼
这个是说你的sql(数据库)查询语句有语法问题,看你发的问题是和前段有关,应该是你没明白错误报告的含义吧。
你可以把'where cook_id = 0' _所在的那一句截图发上来,我给你看看语法错误,或者直接放到数据库里去执行以下试试
$.ajax({
url: basePath + "update.action",
method:"post",
dataType:"json",
data:{
"cookId": $("#edit_cook_id").val,
"cookName": $("#edit_cookName").val,
"cookFlavor": $("#edit_cookFlavor").val,
"cookRepertory": $("#edit_cookRepertory").val,
"cookPrice": $("#edit_cookPrice").val,
"cookType": $("#edit_cookType").val
},
success: function (data) {
if (data > "0") {
alert("客户信息更新成功!");
} else {
alert("客户信息更新失败!");
}
window.location.reload();
},
error:function () {
alert("客户信息更新失败! ");
}
});
改成这样试试看。
不行啊,
根据你这个错误提示,问题可能不在你的ajax,程序都是从上往下执行的,你看看在你的ajax回调之前的执行的,或者直接看你的后台文件的第四行
https://blog.csdn.net/zylwendao/article/details/79074665
错误说的是你sql语法错误,老是关心前端的问题干嘛?
data:JSON.stringify({
cookId: $("#edit_cook_id").val,
cookName: $("#edit_cookName").val,
cookFlavor: $("#edit_cookFlavor").val,
cookRepertory: $("#edit_cookRepertory").val,
cookPrice: $("#edit_cookPrice").val,
cookType: $("#edit_cookType").val
}),
改成
data:{
"cookId": $("#edit_cook_id").val(),
"cookName": $("#edit_cookName").val(),
"cookFlavor": $("#edit_cookFlavor").val(),
"cookRepertory": $("#edit_cookRepertory").val(),
"cookPrice": $("#edit_cookPrice").val(),
"cookType": $("#edit_cookType").val()
},
1、后台接口实际上没有接收到对象参数,有0的值是因为参数自己初始化了一个对象出来。
2、sql报错是因为你执行sql语句的值是初始化出来对象的值,所以根本问题还是在对象参数没有接收到值。
3、修改data传值拼接方式,val方法后面记得加(),能调试或者打印的话,最好把data里的值打印出来看下是不是都有值。
success里返回的data是long型,不能与"0"比较,应该是与0比较