Jquery 将多维数组从ajax传递到action
我无法从对我的操作的AJAX调用中获取数据。下面是我如何在javascript方面构建我的数组: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")]); } });
$("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', .... };