postmain报400_ajax post提交form表单 报400错误 解决方法

昨天晚上做项目遇到了一个奇怪的问题,我用ajax提交一个form表单,后台Java方法用的是一个实体接,但是他根本不进方法体中,直接给我一个400的错误,一开始我以为是我路径的问题(尴尬),结果直接访问那个请求的@requestMapping发现没有问题,竟然进入了我的方法体中,这就可以说明两个问题了,第一个问题就是:跟我的请求地址没有关系,第二个问题就是肯定跟我的请求所带的参数有关系,上网查了一下资料,因为我的一次增加字段比较多,就用的是$("#fromId").serialize()的方法序列化参数,发现这种方法将所有的东西都变成了字符串,网上都说我的问题是因为传到后端的参数类型不符合,然后我就试了一下,只带一个字符型的参数直接请求地址,他竟然还不行,给我报错说不能够将null(就是我带的参数的那个字段)保存进入数据库,这下我不淡定了,我明明就将该字段当作参数带着了,又是一会的纠结,突然发现,我用的字段是大写的,而实体中的是小写,我就试了一下,他大爷的,过了,然后我就疯狂的该我的大小写,五十多个字段,手都快废了我,改好了怀着期待的心情点击保存,发现还是过不去,我想骂人了,想起来还有可能就是参数类型不符合,然后我就讲实体中的所有的date类型,int类型,bigdecimal类型的set方法的参数全部改成String,然后在方法体中给转换过来赋值,进过一番搜素,确定无误之后,再次点击保存,还是过不去,差点砸电脑了,一个保存用了我一个晚上,静下心我又将所有的参数给打印出来,用了最笨的方法,一个一个的试,看看到底是那些过不去,有事一番苦战,终于找到了让我奔溃的原因,在我刚才改变字段大小写的时候,因为字段太多,把某一个字段弄重复了。。。。。最后终于给搞好了。

虽然花费了我一个晚上的时间就搞了这么一个破东西,还是一个最简单的保存功能,但是我也学到了一点东西:

1、虽然程序员免不了经常用粘贴复制,但是一定要细心了,特别是在重复的粘贴复制时。

2、越是简单的东西用着就越要小心,不然他崩溃都不跟你说什么原因,直接给你一个400让你慢慢排查问题去。

3、form表单提交用实体接收时,需要将input或者select中的name属性的字符和实体中的字符完全保持一直包括大小写,不是和数据库中的字段保持一致。

4、form的序列化提交表单带过去的参数全都被序列化成了字符串类型,后端的字段类型如果是int、date等类型的需要手动将set方法给转换一下,转换方法上面一大堆中有。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Java Web开发中,可以使用AJAX进行异步提交form表单,具体实现步骤如下: 1. 在JSP页面中添加form表单,设置id属性和action属性,例如: ``` <form id="myForm" action="submitForm.do" method="post"> <input type="text" name="username"> <input type="text" name="password"> <button type="submit">提交</button> </form> ``` 2. 在JSP页面中引入jQuery库,例如: ``` <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script> ``` 3. 使用jQuery的$.ajax方法异步提交form表单,例如: ``` $(document).ready(function() { $('#myForm').submit(function() { $.ajax({ url: $(this).attr('action'), type: $(this).attr('method'), data: $(this).serialize(), success: function(data) { alert('提交成功'); }, error: function(XMLHttpRequest, textStatus, errorThrown) { alert('提交失败'); } }); return false; }); }); ``` 其中,$(this).serialize()方法可以将表单数据序列化为字符串,方便传递给后台处理。success和error回调函数分别处理提交成功和提交失败的情况。 4. 在Java后台代码中处理form表单数据,例如: ``` @RequestMapping(value="/submitForm", method=RequestMethod.POST) @ResponseBody public String submitForm(HttpServletRequest request) { String username = request.getParameter("username"); String password = request.getParameter("password"); // 处理表单数据 return "success"; } ``` 其中,@RequestMapping注解设置了请求路径和请求方法,@ResponseBody注解表示返回值直接作为响应体输出,不需要经过视图解析器处理。 通过以上步骤,就可以实现AJAX异步提交form表单了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值