您现在的位置: 365建站网 > 365学习 > ajax请求HTTP 400 错误 - 请求无效 (Bad request)

ajax请求HTTP 400 错误 - 请求无效 (Bad request)

文章来源:365jz.com     点击数:180    更新时间:2018-05-16 09:52   参与评论

ajax请求后台数据时有时会报 HTTP 400 错误 - 请求无效 (Bad request);出现这个请求无效报错说明请求没有进入到后台服务里;

原因:1)前端提交数据的字段名称或者是字段类型和后台的实体类不一致,导致无法封装;

         2)前端提交的到后台的数据应该是json字符串类型,而前端没有将对象转化为字符串类型;

解决方案:

1)对照字段名称,类型保证一致性

2)使用stringify将前端传递的对象转化为字符串    data: JSON.stringify(param)  ;

另外实例:

点击添加按钮转跳没反应,控制台没报错,然后在Chrome上检查发现报错了

百度了一下,发现http Status 400这个错误大多是因为,jsp的form表单提交的字段类型后台接收字段类型不匹配造成的(例如,form中为String,后台接收为Integer)

仔细对比了一下后台和数据库了的字段类型,果真如此,,,,,,,
 

Ajax中post方法400和404的问题

1.从400变成404

  我相信有很多人都用过Ajax技术来获取数据,一般都是使用get来获取的,但是敏感信息就不能继续用get了,于是就换成了post,但是用post的时候有时候发生一些奇怪的事情,比如直接访问是400,加上header和data访问是404,这就令人疑惑了,为什么不是从一开始就报错404呢?

2.400的原因

  400在http状态码中的意思是服务器不理解你的请求,这时候你应该检查一下自己的请求格式,因为post是提交的header和body(data),如果你没有header那么报错是正常的,检查header可以用Postman这个谷歌插件来检查,这插件可以告诉你缺少什么参数或者是格式是否正确,使用方法就不赘述了建议百度。一般header格式如下

下面是http格式的头部

3.404的原因

  如果你加上头部却404了,那么千万不要慌张,这时候你已经请求成功了,只是数据404了而以,不要看见页面上写着404就慌张了,这时候你应该注意自己的body(data)内容,看过http的应该都懂,header是请求头,body里面才是真实的数据,数据不带是查不出东西的,而且data格式一般是特殊的,你得和后台好好商量body格式问题,是字符串还是对象的body,这里我举两个例子,下面这个是对象格式

这时候控制台输出的data格式是这样的:

这里如果你的后台是接受字符串的格式,那么你就会报错404,那你就该换种格式,应该把对象用JSON.stringify把body(data)转化成字符串格式,如图

这里的data如果你输出就能发现它的格式是:

这里是简单的字符串拼接而已,如果你有时间你甚至可以自己拼这么一串字符然后当body传过去


如对本文有疑问,请提交到交流论坛,广大热心网友会为你解答!! 点击进入论坛


发表评论 (180人查看0条评论)
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
用户名: 验证码: 点击我更换图片
最新评论
------分隔线----------------------------