java后台接收前端对象数组 - Go语言中文社区

java后台接收前端对象数组


应用场景:盘点需要批量修改,如图所示


当我点击盘点的时候需要获取form表单中的批量数据;

思路:首先,各位肯定知道我们如何传递一个常用类型的数组对象,比如String[] strs、Integer[] ids之类的对象,最常见的操作,批量删除!同样,传递对象数组一样的道理,以对象为单位,比如VoStudent对象,包含两个域String name和int age,那么我们前端传JSON格式的字符串数组对象就好了。DEMO:var argument = '[{"age":"1","name":"李四"},{"age":"2","name":"张三"}]';而后端接收使用@RequestBody List<VoStudent> voStudnetList 来接收数据;

实现方案1):

<script type="text/javascript">
    //批量处理,inventoryListSubmit button id
    $('#inventoryListSubmit').click(function(){
        var studentArray= new Array();
        studentArray.push({age: "1", name: "李四"});
        studentArray.push({age: "2", name: "张三"});
        $.ajax({
               url: '${ctx}/abc/updateFormList',
            type: 'POST',
            data: $.toJSON(studentArray),
            dataType:'json',
            contentType:'application/json;charset=utf-8',

            success: function (data) {
                if(data.status){
                    $.Pro(data.info);
                    setTimeout("goBack()",1000); 
                }else{
                    $.Pro('网络错误');
                }
                disabledBtn("#cancel");
            },
            error: function (data) {
                console.log(data.status);
            }
        });
    });

</script>


 

实现方案2):如果是表单的话是需要处理的,下面直接贴方法,函数serializeJson()可以直接用,嫌麻烦直接拿去用

//将表单序列化成json格式的数据(但不适用于含有控件的表单,例如复选框、多选的select)
    (function($){
      $.fn.serializeJson = function(){
        var jsonData = {};
        var serializeArray = this.serializeArray();
        $(serializeArray).each(function () {
          if (jsonData[this.name]) {
            if ($.isArray(jsonData[this.name])) {
              jsonData[this.name].push(this.value);
            } else {
              jsonData[this.name] = [jsonData[this.name], this.value];
            }
          } else {
            jsonData[this.name] = this.value;
          }
        });
        var vCount = 0;
        for(var item in jsonData){
          var tmp = $.isArray(jsonData[item]) ? jsonData[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 jsonData) {
              jsonObj[item] = jsonData[item][i];
            }
            jsonData2.push(jsonObj);
          }
          return JSON.stringify(jsonData2);
        }else{
          return "[" + JSON.stringify(jsonData) + "]";
        }
      };
    })(jQuery);


    //批量处理
    $('#inventoryListSubmit').click(function(){
        var data = $('#inventoryForm').serializeJson();

        $.ajax({
               url: '${ctx}/abc/updateInventoryFormList',
            type: 'POST',
            data: data,
            dataType:'json',
            contentType:'application/json;charset=utf-8',
            success: function (data) {
                if(data.status){
                    $.Pro(data.info);
                    setTimeout("goBack()",1000); 
                }else{
                    $.Pro('网络错误');
                }
                disabledBtn("#cancel");
            },
            error: function (data) {
                console.log(data.status);
            }
        });
    });

后台接收和上面demo一样的!

版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/wang20y8/article/details/84303522
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2020-03-08 10:28:36
  • 阅读 ( 663 )
  • 分类:前端

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢