jquery.ajax()向后台传递数组数据问题,java后台无法接受

                                         jquery.ajax()向后台传递数组数据问题,java后台无法接受

                                                                                                                                               本博客整理自用,请勿随意传播

1、使用jquery ajax前端向后台传数据的时候有时候会传数组数据,而java后台同学接收到的数据不对;

总结一下:

var sendMsg =new Array();

sendMsg.push(1);

sendMsg.push(2);

//向后台发起ajax请求

$.ajax({

        url: "/xxx",

        type: "GET",

        data: {

               "sendMsg": sendMsg,

                'type':1

        },

        success: function(data) {

                //do sth...

        }

});


2、通过谷歌浏览器中查看发送的请求,发现参数为:

3、我们发现传输的数据参数的名字为sendMsg[]而不是我们定义的sendMsg,这样java后台同学的程序就接不到我们传输的数组数据。

4、解决办法:

1)、把需要传输的数组参数改变成其他方式,比如传输成字符串,只需要把数组中的每个人值拼接一下就可以了(需要和后台同学协商格式);

var sendMsg ='';

sendMsg =sendMsg + '1' + ',';

sendMsg =sendMsg + '2';

//向后台发起ajax请求

$.ajax({

        url:"/jinyu_api/v1/register/sendMsg",

        type: "GET",

        data: {

               "sendMsg": sendMsg,

                'type':1

        },

        success: function(data) {

                //do sth...

        }

});

浏览器传输的数据为下图

2)、添加traditionaltrue 

var sendMsg =new Array();

sendMsg.push(1);

sendMsg.push(2);

//向后台发起ajax请求

$.ajax({

        url:"/jinyu_api/v1/register/sendMsg",

        type: "GET",

        traditional: true,//这里设置为true

        data: {

               "sendMsg": sendMsg,

                'type':1

        },

        success: function(data) {

                //do sth...

        }

});

发送的数据为

这样java后台同学就能收到数据了,万事大吉!

原因:

因为jQuery需要调用jQuery.param序列化参数,jQuery.param(obj, traditional ),默认的话,traditionalfalse,即jquery会深度序列化参数对象,以适应如PHPRuby on Rails框架,
servelt api无法处理,我们可以通过设置traditional true阻止深度序列化,然后序列化结果如下:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值