已配置HiddenHttpMethodFilter和HttpPutFormContentFilter。现在我用ajax发送请求: …… var formData = new FormData($("#duibaForm")[0]); formData.append('tokenContent', Cookies.get('token')); $.ajax({ url : $.fw.url() + 'duiba/activity', type : 'put', data : formData, async : false, cache : false, contentType : false, processData : false, success : function(data) { alert(data.message); if (data.code == 1) { var opener = window.opener; if (opener) { window.close(); opener.location.reload(); } }else{ $btn.attr('disabled', false); } } }); …… 浏览器查看发送的数据正常,spring mvc收到的参数全为null。当我把method改为post并添加参数"_method"为put时却进入不了对应的接口。web.xml片断: <filter> <filter-name>HiddenHttpMethodFilter</filter-name> <filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class> </filter> <filter-mapping> <filter-name>HiddenHttpMethodFilter</filter-name> <url-pattern>/</url-pattern> </filter-mapping> <filter> <filter-name>HttpMethodFilter</filter-name> <filter-class>org.springframework.web.filter.HttpPutFormContentFilter</filter-class> </filter> <filter-mapping> <filter-name>HttpMethodFilter</filter-name> <url-pattern>/</url-pattern> </filter-mapping> 紧急求助!!
你打断点调试一下试试,就是有可能你的数据已经发送过去了,对了,还有可能就是cookie的问题,我之前用cookie也出现 过问题,用一下localstorage试试######和cookie没关系吧,######var formData = new FormData($("#duibaForm")[0]);是什么鬼?能$('#duibaForm').serialize() 否?######回复 @lengmianshi : 可以的,我觉得你可以先确定一下是后端代码或配置的问题,还是前端代码有问题,简单先写个<form action="" method="put" enctype="application/x-www-form-urlencoded">...</form>把数据提交过去看看?如果这样可以提交接收到,那就说明是你的前端代码错了######@Kit_lee 回复 @Kit_lee : 如果我想用put请求上传文件呢?是不是不行?######回复 @lengmianshi : 那试试将你$.ajax中的contentType项去掉看看?如果是HttpPutFormContentFilter的话,form的contentType必须是默认的application/x-www-form-urlencoded,清掉不写的话默认就是这个######回复 @Kit_lee : 就是这样啊,反正进入的是另一个post请求的接口######回复 @lengmianshi : 假设你的浏览器不支持PUT,那么你用HiddenHttpMethodFilter的时候只需要增加参数"_method=put"就好了呀,controller方法应该还是method=RequestMethod.PUT才对,不然怎么进去?######data : formData 修改为 data: JSON.stringify(formData) 试试######回复 @lengmianshi : 后台是否用 JSON 接收都没关系,这个是 POST 发送参数的要求######后台不是用json接受数据的######fromData的问题吧,直接发送一个对象数据过去,会默认进行序列化,如果本身不支持序列化,那么是传输不了的######但我将接口接受的请求方法改为post却能接收数据呢?formData应该是正常的
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。