我正在努力,并努力通过JSON将数组发送到MVC控制器动作。
这是我所拥有的以及我已经尝试过的…
//Get checked records var $checkedRecords = $(':checked'); //e.g. 3 rows selected = [input 4, input 5, input 6] //Have tried following: sendingVar: $checkedRecords.serializeArray(); // gives array of 0's sendingVar: JSON.stringify($checkedRecords); // gives "{\"length\":1,\"prevObject\":{\"0\":{\"jQuery1313717591466\":1,\"jQuery1313717591653\":13},\"context\":{\"jQuery1313717591466\":1,\"jQuery1313717591653\":13},\"length\":1},\"context\":{\"jQuery1313717591466\":1,\"jQuery1313717591653\":13},\"selector\":\":checked\",\"0\":{}}"...wtf //Post $.post(url, { sendingVar: sendingVar }, function(data) {alert(data); });
我该怎么做 ?
编辑:建议$checkedRecords从顶部发送“按原样” 发送的邮件-不起作用。我在jquery框架的某处收到一个奇怪的异常:(
$checkedRecords
uncaught exception: [Exception... "Could not convert JavaScript argument" nsresult: "0x80570009 (NS_ERROR_XPC_BAD_CONVERT_JS)" location: "JS frame :: http://.../.../.../jquery-1.4.4.min.js :: <TOP_LEVEL> :: line 141" data: no]
我认为这意味着它试图将null分配给它不能分配的东西。
编辑:我正在使用MVC2不是3
Edit2:@Monday的答案之后- 问题是由于我如何构建数组 [input 4, input 5, input 6]而并非如此[4,5,6]-关于如何仅获取数组中值的任何想法?
[input 4, input 5, input 6]
[4,5,6]
Edit3:当没有重复时停止停止重复。您是否真的阅读了我的问题或阅读了链接的问题?这是一个不同的问题
@Daveo:
我不想建立一个覆盖的自定义属性,只是为了从JSON发送一个数组,这是多余的,因为我们已经在此问题中进行了介绍-这是不必要的。
这是我的演示,使用mvc2,希望有帮助〜
成功的关键是传统
将traditional参数设置为true
traditional
$(function(){ var a = [1, 2]; $.ajax({ type: "POST", url: "<%= ResolveUrl("~/Home/PostArray/") %>", data: {orderedIds: a}, dataType: "json", traditional: true, success: function(msg){alert(msg)} }); })
从jquery 1.4开始,此参数存在是因为将对象序列化为查询参数的机制已更改。
行动是〜
[HttpPost] public ActionResult PostArray(int[] orderedIds) { return Content(orderedIds.Length.ToString()); }