ajax使用serialize()方法后,数据无法封装并获取(PUT提交方式!)
2017-09-07 20:08
736 查看
跟着视频学习时候,用到了serialize()方法封装一组form中的数据,然后使用PUT方式提交,但是却无法获取到其中的信息,而且信息台还报错说SQL语句错误,如图
![](https://img-blog.csdn.net/20170907195631763?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvenlmMjMzMw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
![](https://img-blog.csdn.net/20170907195638934?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvenlmMjMzMw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
如图,用PUT提交数据后,在Controller.java中写了一个输出语句,结果发现获取到的数据居然都是null!
然而,我之前用POST的方式都没问题,能够很好的获取封装好的数据然后提取出来。
我根据信息台去看,说SQL语句报错,然而SQL语句是mybatis-generator自动生成的,肯定是每错的。而真正的问题,就出在PUT提交方式上
简单来说就是:Tomcat本身的设置,令Tomcat无法封装PUT方式提交的数据,只能封装POST提交的数据,这样一来,自然无法读取数据
解决方法:在web.xml中添加如下过滤器
原理:我们需要能支持直接发送PUT请求,还要封装请求体中的数据,配置如上的xml。将请求体中的数据封装成一个map,request被重新包装,request.getParameter()会被重新封装,就会从自己封装的map中取数据
解决后如图
如图,用PUT提交数据后,在Controller.java中写了一个输出语句,结果发现获取到的数据居然都是null!
然而,我之前用POST的方式都没问题,能够很好的获取封装好的数据然后提取出来。
我根据信息台去看,说SQL语句报错,然而SQL语句是mybatis-generator自动生成的,肯定是每错的。而真正的问题,就出在PUT提交方式上
简单来说就是:Tomcat本身的设置,令Tomcat无法封装PUT方式提交的数据,只能封装POST提交的数据,这样一来,自然无法读取数据
解决方法:在web.xml中添加如下过滤器
<filter> <filter-name>HttpPutFormContentFilter</filter-name> <filter-class>org.springframework.web.filter.HttpPutFormContentFilter</filter-class> </filter> <filter-mapping> <filter-name>HttpPutFormContentFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
原理:我们需要能支持直接发送PUT请求,还要封装请求体中的数据,配置如上的xml。将请求体中的数据封装成一个map,request被重新包装,request.getParameter()会被重新封装,就会从自己封装的map中取数据
解决后如图
相关文章推荐
- jQuery基于ajax()使用serialize()提交form数据的方法
- jQuery基于ajax()使用serialize()提交form数据的方法
- asp.net 通过ajax方式调用webmethod方法使用自定义类传参及获取返回参数
- MVC中使用Ajax提交数据 Jquery Ajax方法传值到action
- Ajax使用POST方式异步提交数据
- 使用jquery.form.js的ajaxsubmit方法提交数据的Bug
- jQuery ajax中使用serialize() 方法提交表单数据
- 使用ASP.NET AJAX异步调用Web Service和页面中的类方法(10):服务器端和客户端数据类型的自动转换:以XML方式序列化数据、小结
- JS使用ajax从xml文件动态获取数据显示的方法
- jQuery使用serialize(),serializeArray()方法取得表单数据+字符串和对象类型两种表单提交的方法
- 原始ajax通过xmlHttpRequest对象的send()方法提交数据--Get方式和Post方式
- jQuery的serialize方法无法获取form数据
- TinyMCE提交AjaxForm获取不到数据的解决方法
- jquery 使用$.ajax post方法提交数据
- jQuery ajax中使用serialize() 方法提交表单数据
- 使用 Repeater方式和完全静态页面使用AJAX读取和提交数据
- 使用ASP.NET AJAX异步调用Web Service和页面中的类方法(10):服务器端和客户端数据类型的自动转换:以XML方式序列化数据、小结
- jQuery ajax中使用serialize()方法提交表单数据示例
- Spring集成Hibernate,使用JPA注解方式,新增数据无法提交
- jQuery ajax中使用serialize() 方法提交表单数据