ajax 请求到后台参数为null

 $.ajax({
            type: "post",
            async: false,
            cache: false,
            dataType:"json",
            contentType: false,
            processData:false,
            traditional: true, //使json格式的字符串不会被转码
            url: "${ctx}/grouppurchase/add",
            data: {
                 name: $("[name='name']").val(),
                 sbegin:$("#userStartDate").val()+" 00:00:00",
                 send:$("[name='send']").val()+" 00:00:00",
                 gbegin:$("[name='gbegin']").val()+" 00:00:00",
                 gend: $("[name='gend']").val()+" 00:00:00",
                 price: $("[name='price']").val(),
                 tprice:$("[name='tprice']").val(),
                 num: $("[name='num']").val(),
                 refund:refund,
                 appointment:appointment,
                 img:formdata,
                 context:editor.txt.html(),
                 storeid:strgetSelectValue,
            },
            success: function (data) {
                alert("成功")
            },
            error: function (XMLHttpRequest, textStatus, errorThrown) {
                alert("提交失败,错误代码:" + XMLHttpRequest.status);
                alert("提交失败,错误代码:" + XMLHttpRequest.readyState);
                alert("提交失败,错误代码:" + textStatus);
            }
        });

图片说明
图片说明
图片说明

你后台代码的requestparam注解写了两个context

dataType 改成text

看看前台数据类型与后台数据类型,是否一致,要一致才能取到

url: "${ctx}/grouppurchase/add", 这个add是方法名把?把 @RequestMapping("/add")加到@Responsebody 上面试试

发送的请求参数没有传递过去。。

前台获取到了吗?打印出来看一下;获取到了后台我写法跟你不一样,你可以试下:
@RequestMapping(value = "/add", method = RequestMethod.POST, produces = "text/html;charset=UTF-8")
@ResponseBody
public String add(HttpServletRequest request, HttpServletResponse response,
ModelMap map) {
//我感觉有request直接获取参数就好了,当然,你用@RequestParam就少了判断少参数情况时的判断
String name = request.getParameter("name");
...

        }

Controller加注解了嘛?

这么多个参数,建议使用对象接收就行了

@RequestBody 替换掉@requestparam

参数好多啊,不如用对象呢

把这句话去掉: contentType: false,

加上@RequestMapping(/add)试一下

发送请求数据参数这么多长度才15有问题

你是用ajax上传的文件吗?

朋友你的传值 console里面都打印成了对象数组了。
processData:
要求为Boolean类型的参数,默认为true。默认情况下,发送的数据将被转换为对象(从技术角度来讲并非字符串)以配合默认内容类型"application/x-www-form-urlencoded"。如果要发送DOM树信息或者其他不希望转换的信息,请设置为false。
一般来讲都使用默认值就能满足你的需求了。基本上写"dataType"、 "type"、"url"、 "data"、 "success"足够了。

contentType:application/json。换成这个应该可以了。

1.楼主打印一下,判断一下是否进入后端的方法
若没有进入数据类型出现问题或者路径匹配有问题
2.进入则可以去除重复值在获取一下看有没有问题
3.推荐方法内部使用request.getParameter("")获取参数,该方法保证不会在未进入方法之前报错