Jquery 将多维数组从ajax传递到action

Jquery 将多维数组从ajax传递到action,jquery,asp.net-mvc-4,Jquery,Asp.net Mvc 4,我无法从对我的操作的AJAX调用中获取数据。下面是我如何在javascript方面构建我的数组: $("input[type=checkbox]").each(function (index){ if ($(this).attr('id').indexOf("UniqueID_") > -1) { savedParams.uniqueIds.push([$(this).attr('id'), $(this).is(":checked")]); } });

我无法从对我的操作的AJAX调用中获取数据。下面是我如何在javascript方面构建我的数组:

$("input[type=checkbox]").each(function (index){
    if ($(this).attr('id').indexOf("UniqueID_") > -1) {
        savedParams.uniqueIds.push([$(this).attr('id'), $(this).is(":checked")]);
    }
});
然后我进行ajax调用:

return $.get('<%= Url.Action("GridData") %>', savedParams).done(
    function(rows, status, xhr) {
        doSomething();
    });

感谢您的帮助

为了将字典传回方法,javascript对象需要采用以下格式

var savedParams = { 'uniqueIds[0].key': 'ABC', 'uniqueIds[0].value': 'True', 'uniqueIds[1].key': 'DEF', 'uniqueIds[1].value': 'True', .... };
但是,您不应该将字典传递给GET方法。除了创建丑陋的查询字符串外,您还可以轻松地超过查询字符串字符限制并引发异常。而是发布数据


在任何情况下,您都可以通过使用视图模型(比如使用属性
stringid
boolisselected
)来避免这一切,并在
for
循环中使用HtmlHelpers正确构建html,这样您就可以发回
公共ActionResult GridData(IEnumerable模型)
。然后只需
savedParams=$('form').serialize();

你所说的值都错了是什么意思?它们怎么错了?对不起,应该包括这一点。所以我的字典中有三个条目:{0,null}{1,null}{2,null}1)多维数组与字典不是一回事2)你的JS正在推送一个列表,该列表由id作为一个项和检查状态作为另一个项组成,而不是你最可能想到的键值对。经过一些考虑,我意识到我真的在试图强制一些我可能不需要强制的东西。我能够重写我的一些代码,因此我不需要传递多维数组,而只传递逗号分隔的字符串。正如您所说,查询字符串很难看。如果我有时间回去做不同的事情,视图模型将是一种更干净的方法。谢谢你提供的额外信息!
GET /Transactions/GridData?2%5B0%5D%5B%5D=UniqueID_1&uniqueIds%5B0%5D%5B%5D=true&uniqueIds%5B1%5D%5B%5D=UniqueID_2&uniqueIds%5B1%5D%5B%5D=true&uniqueIds%5B2%5D%5B%5D=UniqueID_3&uniqueIds%5B2%5D%5B%5D=true HTTP/1.1
var savedParams = { 'uniqueIds[0].key': 'ABC', 'uniqueIds[0].value': 'True', 'uniqueIds[1].key': 'DEF', 'uniqueIds[1].value': 'True', .... };