HTTP 400 错误

复现错误

ajax请求后台数据时有时会报 HTTP 400 错误 - 请求无效 (Bad request);出现这个请求无效报错说明请求没有进入到后台服务里;
原因:
1)前端提交数据的字段名称或者是字段类型和后台的实体类不一致,导致无法封装;
2)前端提交的到后台的数据应该是json字符串类型,而前端没有将对象转化为字符串类型;

错误代码

$.ajax({
type: "POST",
url: "news/newsAdd",
data: data,
dataType:'json',
contentType:"application/json",
success: function(data, textStatus, jqXHR) {
console.log(data)
},
error: function(XMLHttpRequest, textStatus, errorThrown) {
if (textStatus && textStatus == "timeout") {
confirm("网络超时,请重试!");
}
}
}
);

原因:直接将json作为参数传入

参考  spring @RequestParam, @RequestBody Map注入注意事项

  • @RequestBody需要把所有请求参数作为json解析,因此,不能包含key=value这样的写法在请求url中,所有的请求参数都是一个json
  • 直接通过浏览器输入url时,@RequestBody获取不到json对象,需要用java编程或者基于ajax的方法请求,将Content-Type设置为application/json
  • @RequestParam参数中包含Map时,不要再写其他参数了,否则,map都会包含进去。

更正代码

$.ajax({
type: "POST",
url: "news/newsAdd",
data: JSON.stringify(data),
dataType:'json',
contentType:"application/json",
success: function(data, textStatus, jqXHR) {
console.log(data)
},
error: function(XMLHttpRequest, textStatus, errorThrown) {
if (textStatus && textStatus == "timeout") {
confirm("网络超时,请重试!");
}
}
}
);

参考:JSON.stringify()的用法

@RequestBody的使用

good luck!

链接:https://juejin.im/post/5cd0ea2f6fb9a032076c1ca5

最新文章

  1. SwitchButton 开关按钮 的多种实现方式
  2. httpclient瓶颈
  3. JAVA 设计模式 中介者模式
  4. 2016年11月19日 星期六 --出埃及记 Exodus 20:10
  5. Hbase物理模型
  6. Activity Launch Mode
  7. android开发之路03
  8. iframe 中嵌套刷新
  9. perf---LINUX内核研究
  10. tkinter之文件对话框
  11. django: urlconfig
  12. We Chall-Training: Encodings I -Writeup
  13. github 发布项目
  14. vue 组件开发
  15. 【Node.js】二、基于Express框架 + 连接MongoDB + 写后端接口
  16. Python快速学习08:模块的操作
  17. Zabbix监控文件是否存在/文件大小
  18. git 线上回滚问题纪要
  19. NumPy 广播机制(Broadcasting)
  20. CS190.1x Scalable Machine Learning

热门文章

  1. Jupyter Notebook快捷键总结
  2. Java Set集合的详解
  3. Python中读取目录里的文件并按排序列出
  4. 题解【洛谷P5658】[CSP-S 2019]括号树
  5. php curl 发起get和post网络请求
  6. this.$nextTick
  7. vue-cli脚手架创建vue项目
  8. Junit +cucumber 运行报错 initiallizationError
  9. 题解 【Codeforces489B】 BerSU Ball
  10. Windows下PHP安装 Imagick 扩展