前端jquery发送数据时ajax参数中存在数组(除了数组还有其它类型的参数),springmvc后台无法接收到数据的原因及解决办法。

一.若ajax要传递的参数中存在数组,如下所示:

       var $data = {
            id:0001,
            name:"张三",
            friends:new Array("李四","王五","赵六")
        }
        $.ajax({
            type:"POST",
            url:"/test",
            data:$data,
            success:function (result) {
                //处理
            }
        });    

发现springmvc后台无法接收到数据,这是因为ajax将数组进行了深度序列化处理,后台无法识别。所以我们需要阻止深度序列化处理,如下所示:

        $.ajax({
            type:"POST",
            url:"/test",
            data:$data,
            traditional:true,//阻止深度序列化
            success:function (result) {
                //处理
            }
});

然后前后端就可以正常传递数据了。