后端代码:
@Slf4j
@Controller
@RequestMapping("/lostDetail")
public class LostDetailController {
@Autowired
private LostDetailService lostDetailService;
@PostMapping("/add")
// @ResponseBody
public R<String> addNotice(@RequestBody LostDetail lostDetail,HttpServletRequest req) {
User user = (User)req.getSession().getAttribute("user");
log.info("{}添加失物信息{}",user.getId(),lostDetail);
lostDetail.setCreatUser(user.getId());
lostDetailService.save(lostDetail);
return R.success("添加成功");
}
}
前端代码:
function addNotice(){
let data = checkAddNotice();
if (data) {
$.ajax({
type: "POST",
url: "/lostDetail/add",
contentType: "application/json",
dataType: "json",
data: JSON.stringify(data),
success: function (data) {
if (data.code == 200) {
alert("添加成功");
}else {
alert("未知错误");
}
},
error: function (data) {
alert("添加失败");
}
})
}
}
原因:后端采用的是Controller注解,不支持JSon格式。
解决办法:
- 直接将@Controller 注解换为@RestController.
- 在方法上加上@ResponseBody.
总结:
@RestController注解是@Controller和@ResponseBody的结合体
类似此问题一般是前后端数据的传输问题。