$.post 传递数组等复杂数据

2 篇文章 0 订阅

之前总结了一篇关于ajax使用 .ajax使 . a j a x 传 递 数 组 的 博 客 , 但 是 每 次 使 用 .ajax都需要配置url、dataType、contentType等,太过麻烦,于是想尝试使用$.post方法进行传值,最近正好在项目中需要使用,做一下笔记
一、简单类型的list传递

function CreateTask() {
    var rows = $('#itemGrid').datagrid('getSelections');
    if (rows) {

        var ids = [];
        $.each(rows, function (index, value) {
            ids.push({ name:'ids',value:value.Id });
        })
        ids.push({ name: 'taskname', value: $('#taskname').val() });
        var selected = $('#userTree').tree('getSelected');
        if (selected) {
            ids.push({ name: 'recieverid', value: selected.attributes.UserId });
            ids.push({name:'recievername',value:selected.text});
        }
        $.post("/Inspection/CreateTask", ids, function (data) {
            $.messager.alert(data.title,data.msg);
        }, 'json')
    }
}

后台代码

  public ActionResult CreateTask(List<int> ids,string taskname,int recieverid,string recievername)
        {
        }

主要思路是网数组中添加键值对对象,name属性的值需要与后台controller接收的数据字段同名
二、复杂类型对象list传递
根据需要,传一个List < ExportPackagesPara>对象,对象定义如下:

 public class ExportPackagesPara
    {
        public int Id { get; set; }
        public string text { get; set; }
        public string entity { get; set; }
        public string filter { get; set; }
    }
  function AlertMessage() {
            var checks = packageTree.getCheckedNodes();
            var pakages = {};
            var i = 0;
            checks.forEach(function (currentValue, index) {
                var node = packageTree.getDataById(currentValue);
                if (node.text == "资源" || node.text == "资产" || node.text == "资金") {

                } else {
                    pakages["paras[" + i + "].Id"] = node.Id;
                    pakages["paras[" + i + "].text"] = node.text;
                    pakages["paras[" + i + "].entity"] = node.entity;
                    pakages["paras[" + i + "].filter"] = node.filter;
                    i++;
                }
            });
            $.post("/ExportPackages/ExportPackages?plugin=LSRPM.Management", pakages, function (data) {
                var obj_data = data;
            }, 'json');
        }

后台代码

 public ActionResult ExportPackages(List<ExportPackagesPara> paras){
 }

传递数据样式

需要注意的是,如果采用formdata传递数据,则传递的数据样式必须是paras[0].Id(Id为对象的属性),不能是paras[0][Id]这种,而且数组序号必须从0开始且连续,中间不能跳号。
GOOD LUCK!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值