使用jQuery';将嵌套数组传递给asp.net mvc;阿贾克斯

使用jQuery';将嵌套数组传递给asp.net mvc;阿贾克斯,jquery,asp.net-mvc,arrays,Jquery,Asp.net Mvc,Arrays,我正在尝试将嵌套数组传递给asp.net mvc控制器,如下所示: var subgroups = []; subgroups [0] = [["A", "Y"], ["B", "Y"], ["C", "Y"]]; subgroups [1] = [["D", "Z"], ["E", "Z"], ["F", "Z"]]; $.ajax({ url: "<

我正在尝试将嵌套数组传递给asp.net mvc控制器,如下所示:

var subgroups = [];
subgroups [0] = [["A", "Y"],
                 ["B", "Y"],
                 ["C", "Y"]];
subgroups [1] = [["D", "Z"],
                 ["E", "Z"],
                 ["F", "Z"]];

$.ajax({ url: "<%= Url.Content("~/Controller/Action") %>", data: { subgroups: subgroups },
         dataType: "json", context: document.body, success: function(data) { ... } );
subgroups[0][0] == null;
subgroups[0][1] == null;
subgroups[0][2] == null;
subgroups[1][0] == null;
subgroups[1][1] == null;
subgroups[1][2] == null;
无法传递深度嵌套数组中的值。Firebug报告我的ajax请求的参数有:

subgroups[0][0][] A
subgroups[0][0][] Y
subgroups[0][1][] B
subgroups[0][1][] Y
subgroups[0][2][] C
subgroups[0][2][] Y
subgroups[1][0][] D
subgroups[1][0][] Z
subgroups[1][1][] E
subgroups[1][1][] Z
subgroups[1][2][] F
subgroups[1][2][] Z
原因似乎是jQuery没有填充这些数组索引,因为我可以解决的问题是将数据格式化为:

subgroups [0] = [{ 0: "A", 1: "Y"}, ...];
为什么jQuery为外部数组而不是内部数组放索引?请告诉我有比手动指定数字键更好的解决方法?

在5290行的文件“code.jquery.com/jquery-1.4.2.js”中:

buildParams( prefix + "[" + ( typeof v === "object" jQuery.isArray(v) ? i : "" ) + "]", v );
我更改此代码:

buildParams(prefix + (typeof v === "object" jQuery.isArray(v) ? "[" + i + "]" : ""), v);
public ContentResult Action(List<string[]> subgroups) {
结果很好。我无法在更多的案例中进行测试

我在jQuery.com中创建了一个票证,以查看这是否是一个bug:

但在:

public ContentResult Action(List<string[][]> subgroups) {
public ContentResult操作(列出子组){
对于此修改,您必须使用以下代码:

buildParams(prefix + (typeof v === "object" jQuery.isArray(v) ? "[" + i + "]" : ""), v);
public ContentResult Action(List<string[]> subgroups) {
public ContentResult操作(列出子组){
在第5290行的文件“code.jquery.com/jquery-1.4.2.js”中:

buildParams( prefix + "[" + ( typeof v === "object" jQuery.isArray(v) ? i : "" ) + "]", v );
我更改此代码:

buildParams(prefix + (typeof v === "object" jQuery.isArray(v) ? "[" + i + "]" : ""), v);
public ContentResult Action(List<string[]> subgroups) {
结果很好,我无法在更多的案例中进行测试

我在jQuery.com中创建了一个票证,以查看这是否是一个bug:

但在:

public ContentResult Action(List<string[][]> subgroups) {
public ContentResult操作(列出子组){
对于此修改,您必须使用以下代码:

buildParams(prefix + (typeof v === "object" jQuery.isArray(v) ? "[" + i + "]" : ""), v);
public ContentResult Action(List<string[]> subgroups) {
public ContentResult操作(列出子组){

如果其他人像我一样偶然发现这个问题,但不喜欢修改jQuery以使用特定的服务器软件,我最终使用将嵌套数组的JSON字符串传递到服务器,然后在服务器上解码该JSON字符串。

如果其他人像我一样偶然发现这个问题,但我不同意我不喜欢修改jQuery以使用特定的服务器软件,我最终使用它将嵌套数组的JSON字符串传递给服务器,然后在服务器上解码该JSON字符串。

+1因为我是我遇到的最勇敢的jQuery人之一:)你的解决方案对我来说不太管用,但它帮助我找到了解决方案通过将第5419行更改为:
buildParams(前缀+“[”+i+“]”,v)打开
感谢您打开错误报告并引导我找到解决方案。我不确定这是错误还是预期的jQuery行为,但对于运行ASP.net MVC的人来说,这种行为似乎更有用。是的,我复制了错误的行号,正确的行号是5419。感谢+1是我遇到的最勇敢的jQuery人之一:)您的解决方案没有这对我来说是可行的,但它通过将第5419行更改为:
buildParams(前缀+“[”+i+“]),v帮助我找到了解决方案
感谢您打开错误报告并为我提供解决方案。我不确定这是错误还是预期的jQuery行为,但对于运行ASP.net MVC的人来说,这种行为似乎更有用。是的,我复制了错误的行号,正确的行号是5419。谢谢