bar*_*ron 8 c# asp.net-mvc jquery json
我正在努力,通过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); });
Run Code Online (Sandbox Code Playgroud)
我该怎么做 ?
编辑:建议那些建议$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]
Run Code Online (Sandbox Code Playgroud)
我认为这意味着它试图将null分配给它不能的东西.
编辑:我使用MVC2而不是3
编辑2:在@ Monday的答案之后 - 问题是由于我是如何构建数组 [input 4, input 5, input 6]
而不是[4,5,6]
- 任何想法如何才能获得数组中的值?
编辑3:当没有重复时,停止投票.你真的读过我的问题或阅读链接的问题了吗?这是一个不同的问题
@Daveo:
我不想构建一个重写的自定义属性只是为了从JSON发送一个数组,这很荒谬,因为我们已经在这个问题中已经介绍过 - 这是没有必要的.
Mon*_*day 24
这是我的演示,使用mvc2,希望有些帮助〜
成功的关键是传统
将traditional
参数设置为true
$(function(){
var a = [1, 2];
$.ajax({
type: "POST",
url: "<%= ResolveUrl("~/Home/PostArray/") %>",
data: {orderedIds: a},
dataType: "json",
traditional: true,
success: function(msg){alert(msg)}
});
})
Run Code Online (Sandbox Code Playgroud)
由于jquery 1.4存在此参数,因为将对象序列化为查询参数的机制已更改.
并且行动是〜
[HttpPost]
public ActionResult PostArray(int[] orderedIds)
{
return Content(orderedIds.Length.ToString());
}
Run Code Online (Sandbox Code Playgroud)