【发布时间】:2011-10-30 06:35:13
【问题描述】:
我正在尝试并努力通过 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 框架的某个地方遇到了一个奇怪的异常:(
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] - 任何想法我如何才能获取数组中的值而是?
Edit3:如果不是,请停止重复投票。您是否真的阅读了我的问题或阅读了链接的问题?这是一个不同的问题
@Daveo:
I don't want to build in an overriding custom attribute just to send an array from JSON, that is rediculous 我们已经在这个问题中讨论过——没有必要。
【问题讨论】:
-
你想要的结果是什么?你的数组是 jQuery 对象,stringify 版本对我来说很合适。你期待它是什么样子的?
-
它只是一个包含已检查项目的字符串 ID 的数组。我希望 checkedRecords 包含一个包含所有所选项目 ID 的数组。所选输入的
value包含我需要的 ID 值。
标签: c# jquery asp.net-mvc json