POST 400 Bad Request The request sent by the client was synt

本文探讨了在使用$.post提交数据时遇到400BadRequest错误的原因及解决方案,强调了前后端数据类型匹配的重要性,并提供了使用$.ajax及自定义实体创建的详细步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.youkuaiyun.com/jiangjunshow

也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!

               

最近在做Web开发的时候,使用$.post提交数据,但是回调函数却没有被触发,按F12看控制台输出是:POST *** 400 Bad Request

后台是SpringMVC的,设置了断点也不会被触发。

后来查看JQuery资料了解到,$.post提交数据只有成功时才触发回调函数,于是改用$.ajax提交数据,添加error回调函数,得到错误信息了,如下图:


这个问题是什么原因造成的呢?

后来经过测试发现,是表单提交的内容数据类型与实体的(也就是数据表字段)的数据类型不匹配导致的。

在提交表单之前应该对用户输入的内容做验证,后台直接做映射了,没有做内容验证的机会。

2016-05-26更新

解决方法:

上面只是描述了问题产生的原因,而并没有给出解决的方法,很多小伙伴其实看到原因就已经想到解决方法了。

那有些小伙伴可能刚接触,还搞不清状况,我就再说一下解决的步骤:

1、改用$.ajax提交数据,添加error回调函数(其实在开发中严格来说是不允许使用$.post的,因为失去了错误处理的功能);

类似代码如下,具体请参考JQurey参考手册:

$.ajax({   type: "POST",   url: "some.php",   data: "name=John&location=Boston",   success: function(msg){     alert( "Data Saved: " + msg );   },    error: function(XMLHttpRequest){     alert( "Error: " + XMLHttpRequest.responseText);   }});
这样你就可以通过 XMLHttpRequest.responseText 或XMLHttpRequest.responseHTML 了解到后端代码到底发生了什么错误。

2、不要把生成实体的工作交给MVC框架来完成

你的产生问题的代码,我猜测可能类似如下:

 /**   * 添加用户.  **/ @RequestMapping("/adduser.do"@ResponseBody public void adduser(HttpServletRequest request, HttpServletResponse response, User user) throws Exception {  this.userManager.saveOrUpdate(user); }
这样做就导致上面说过的问题:后台直接做映射了,没有做内容验证的机会;明明一个字段要求数字,结果用户输入了字母或汉字。

正确的方法类似如下:

 /**   * 添加用户.  **/ @RequestMapping("/adduser.do"@ResponseBody public void adduser(HttpServletRequest request, HttpServletResponse response) throws Exception {  //将形参 user 拿到函数内部定义创建  User user = new User();  //这里对用户的年龄就要进行判断,具体规则你自己定义,我只是举个例子  Integer age = getInteger("age");  if (age != null){   uset.SetAge(age);  }  this.userManager.saveOrUpdate(user); }  protected Integer getInteger(String name) {  String str = this.request.getParameter(name);  if (StringUtils.isNotBlank(str)) {    return Integer.valueOf(str);  }  return null;   }

你的问题解决了吗?

没有?

看下面这个案例:

SpringBoot 项目 ajax post 出现 400 Bad Request 错误 后台调试不进断点的解决方法


           

给我老师的人工智能教程打call!http://blog.youkuaiyun.com/jiangjunshow
这里写图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值