SpringMVC后台无法接收参数 错误使用 contentType与processData
昨天莫名其妙的后台无法接收到参数
由于后台的参数用注解@RequestParam进行了注解
所以一直报错404
后来去掉这个注解到是成功了
但是参数值却不是预期的结果
最后才发现是因为我错误使用了前端代码
通常,如果我们的表单中如果有文件类型,我目前使用的方法是使用formData进行封装
var formData = new FormData($("#form1")[0]);
var formData = new FormData($("#form1")[0]);用ajax提交的时候 data的属性就是 formData
如以下部分代码
var formData = new FormData($("#form1")[0]); $.ajax({ url:"update/upmenus.html?nowmenus=${nowmenus}", async:true, dataType:"text", type:"post",..", data:formData,我们还需要加上如下两个参数
contentType:false, processData:false,
contentType 为 false,本来我们需要设置的,但是因为FormData 已经封装进去了,所以这里不用设置
processData 为 false,告诉ajax不用去处理数据(FormData),因为数据也已经被封装
这个问题大家也可以参考这里
SSH框架中struts2上传文件的实现,页面不跳转刷新,使用FormData进行Ajax请求
好了,回到正题
事实上,我后台接收的是一个参数,而且我的表单也没有文件类型
所以我先得到一个数据,然后data是
data:{"saverows":datajson},但是我仍然使用了
contentType:false, processData:false,所以就报错了,因为在ajax提交到SpringMVC时,是必须设置contentType的。如设置为以下代码
contentType:"application/x-www-form-urlencoded",所以,我只需要加上上面的代码,然后去掉contentType与processData即可
即,部分的ajax代码如下
$.ajax({ contentType:"application/x-www-form-urlencoded", url:"update/upmenus.html?nowmenus=${nowmenus}", async:true, dataType:"text", type:"post", loading:"正在保存在服务器......", data:{"saverows":datajson}, //data:formData, //contentType:false, //processData:false,自此,提交表单,出现404的错误,也找到原因了
爆款云服务器s6 2核4G 低至0.46/天,具体规则查看活动详情