这玩意真的,无情,初接触要碰很多坑。
首先,项目用了layUI,也用了thymeleaf。
但表单的提交我没有采用thymeleaf給的方式,因为太麻烦了,不想看(偷笑.gif)
所以选JQuery的ajax方式提交表单。
这里有几个坑
// 修改文章的表单处理
@PostMapping("/adminUpdate")
@ResponseBody
public R<article> updateArticle(@RequestBody article article) {
int result = articleService.updateArticle(article);
System.out.println("进入修改方法");
System.out.println(result);
if(result == 1) {
return R.ok(RHttpStatusEnum.ARTICLE_UPDATE_SUCCESS);
}else {
return R.ok(RHttpStatusEnum.ARTICLE_UPDATE_FAIL);
}
}
参数一定要加上@RequestBody,前端传来的json数据会对应名字放进你的参数对象中。
(名字很重要,一定要一一对应)
最后看一下前端的这个东西啊
$.ajax({
type:"POST",
url: "/adminUpdate",
dataType: "JSON",
contentType: "application/json",
data: JSON.stringify(data.field),
success: function (result) {
alert(result);
var data = JSON.stringify(result);
alert(data);
var value = JSON.parse(data);
alert(value.code+" "+value.message);
}
});
// data.field是layui提供的一个接口,代表全体字段的值
因为传的是json,一定要记得设置contentType,dataType是预期服务器返回的类型,不是你的数据类型。
data
data这个值要接受的是一个字符串,而不是一个对象。
最神奇的东西
可能你们很好奇我在干嘛,但success的回调函数的参数类型居然是一个Javascript对象。
所以如果你想把它转成json对象,得用两步,先转成字符串,在转成json对象。