SpringMVC后台无法接收参数 错误使用 contentType与processData

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/天,具体规则查看活动详情Blog Img