其他分享
首页 > 其他分享> > 前端传递多个对象的数据到后台

前端传递多个对象的数据到后台

作者:互联网

1.把前端数据封装成json数组字符串

$.fn.serializeJson = function(){
    var jsonData1 = {};
    var serializeArray = this.serializeArray();
    // 先转换成{"id": ["12","14"], "name": ["aaa","bbb"], "pwd":["pwd1","pwd2"]}这种形式
    $(serializeArray).each(function () {
        if (jsonData1[this.name]) {
            if ($.isArray(jsonData1[this.name])) {
                jsonData1[this.name].push(this.value);
            } else {
                jsonData1[this.name] = [jsonData1[this.name], this.value];
            }
        } else {
            jsonData1[this.name] = this.value;
        }
    });
    // 再转成[{"id": "12", "name": "aaa", "pwd":"pwd1"},{"id": "14", "name": "bb", "pwd":"pwd2"}]的形式
    var vCount = 0;
    // 计算json内部的数组最大长度
    for(var item in jsonData1){
        var tmp = $.isArray(jsonData1[item]) ? jsonData1[item].length : 1;
        vCount = (tmp > vCount) ? tmp : vCount;
    }

    if(vCount > 1) {
        var jsonData2 = new Array();
        for(var i = 0; i < vCount; i++){
            var jsonObj = {};
            for(var item in jsonData1) {
                jsonObj[item] = jsonData1[item][i];
            }
            jsonData2.push(jsonObj);
        }
        return JSON.stringify(jsonData2);
    }else{
        return "[" + JSON.stringify(jsonData1) + "]";
    }
};

2.

var data2 = $("#delivered_info_add_form").serializeJson();
$.ajax({
    url:urls.add,
    type:"post",
    data:data2,//List直接接收
    //data:{'jsonStr':data2},//字符串接收     contentType : 'application/json;charset=utf-8', //设置请求头信息,List直接接收需设置    success:function (data) {
        if(data.success){
            view.msg(data.message);
            actives.reload();
            layer.close(index)
        }else {
            view.msg(data.message)
        }
    }
});

3.后台接收json字符串,转化为json对象

或者后台直接用List接收

标签:name,item,前端,传递,var,后台,data,jsonData1,vCount
来源: https://blog.csdn.net/tyjlearning/article/details/101291674