ajax请求http400错误的几种解决方法

文章目录

  • 前言
  • 一、情况一(参数数量不对应)
  • 二、情况二(前端参数书写问题)
    • 1.ajax下data里的key值和后端的参数名字要一一对应
    • 2.参数的类型对应错误
  • 三、情况三(post请求下修改后端必须接收参数)
  • 四、拼接参数丢掉&或?
  • 总结

前言

ssm项目使用ajax的post请求400

一、情况一(参数数量不对应)

后端接受的参数和前端传入参数的数量不一致

验证方法
打开浏览器开发者工具
ajax请求http400错误的几种解决方法_第1张图片
查看前端的参数个数
然后查看后端参数
ajax请求http400错误的几种解决方法_第2张图片
ajax请求http400错误的几种解决方法_第3张图片

二、情况二(前端参数书写问题)

1.ajax下data里的key值和后端的参数名字要一一对应

ajax请求http400错误的几种解决方法_第4张图片
红框里的的值要和后台的对象属性值一样(不能写错)
ajax请求http400错误的几种解决方法_第5张图片
如果你接收的不是对象,而是一个Sting类型或者int类型的变量
需要参数名和ajax下的data的key值一样
如下图
ajax请求http400错误的几种解决方法_第6张图片
ajax请求http400错误的几种解决方法_第7张图片

2.参数的类型对应错误

例如前端传递的参数是一串字符串,而后端接收的参数类型是int的,也会导致400错误
前端参数

//前端
data{
bookid:'我是字符串'
}
//后端
....
public String addBook(int bookid){....}

这种情况也会导致报错

三、情况三(post请求下修改后端必须接收参数)

拿分页方法举例
page表示第几页,limit表示该页显示几条记录

@RequestMapping(value ="getdata.do")
    @ResponseBody
    public Map test(@RequestParam(required = false) Integer page, Integer limit){......}

如果默认访问该方法,应该返回所有数据,当点击第几页的时候,参传递这两个参数。
这是需要有两个地方注意
一个是要加@RequestParam(required = false)
表示这个参数不是必须要传的,默认值为null,
第二个需要把int类型改成Integer类型,不然也会报错,Integer的默认值是null,不是使用int,使用int默认值报错

四、拼接参数丢掉&或?

http://localhost:8080/test/gosp.do这样一个地址,拼接参数的时候,特别是拼接多个的时候,很容易犯丢掉&和?的错误
正确的形式如下
http://localhost:8080/test/gosp.do?userid=1&pwd=123
以下是几种错误例子
http://localhost:8080/test/gosp.douserid=1&pwd=123
http://localhost:8080/test/gosp.do?userid=1pwd=123

总结

如有其他情况问题,请留言补充。归根结底,http400还是自己马虎的问题,不是什么难题,只是要写的时候多注意。细心一点,并且参数命名要有一定的规律,避免随便的命名。还是比较好解决的。

你可能感兴趣的:(笔记,java,ajax,http,spring,mvc)