一尘不染

通过JSON将数组发送到MVC控制器?

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); });

我该怎么做 ?

编辑:建议$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:

我不想建立一个覆盖的自定义属性,只是为了从JSON发送一个数组,这是多余的,因为我们已经在此问题中进行了介绍-这是不必要的。


阅读 189

收藏
2020-07-27

共1个答案

一尘不染

这是我的演示,使用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)}
    });
})

从jquery 1.4开始,此参数存在是因为将对象序列化为查询参数的机制已更改。

行动是〜

[HttpPost]
public ActionResult PostArray(int[] orderedIds)
{
    return Content(orderedIds.Length.ToString());
}
2020-07-27