【问题标题】:Asp.net MVC Ajax iterationAsp.net MVC Ajax 迭代
【发布时间】:2026-02-21 03:15:02
【问题描述】:

我正在使用$.getJSON 将一个对象返回到我的视图中。该对象包含许多列表,我需要对其进行迭代。如何才能做到这一点?到目前为止我的代码是:

$.getJSON("/Home/GetData",
        function (data) {
            $.each(data, function (index) {
                //access data here for each list in object?
            });
        });

谢谢。

【问题讨论】:

  • 这段代码看起来不错...你想完成什么?您是否需要遍历所有列表或列表的项目...

标签: jquery asp.net ajax json


【解决方案1】:

如果我明白你在这里问什么,你会得到这种形式的 JSON 对象:

// result
{
    people: [{...}, {...}, ... , {...}],
    places: [{...}, {...}, ... , {...}],
    ...
}

您应该首先迭代返回的 JSON 对象,然后分别迭代每个列表的项目。大致如下:

$.getJSON("/Home/GetData", function (data) {
    // iterate over lists in an object
    for(var list in data)
    {
        // list variable holds the name of the list (ie. "people")
        // iterate over list items
        $.each(data[list], function (index) {
            // do something with this list item
        });
    }
});

【讨论】:

    【解决方案2】:

    使用$.each时,签名为:

    $.each(data, function (index, item) {
        //access data here for each list in object?
    });
    

    因此可以直接访问该项目。另外,我认为应该将列表作为一个数组向上推,这样您就可以根据需要拥有任意数量的 $.each 语句。下一个内部数组可通过以下方式获得:

    $.each(item.SubList, function(si, sitem) {
    
    });
    

    如果您发布推送的数据结构,我们可以提供更多帮助。另外,您要返回的对象是匿名类还是强类型?你要返回一个 JsonResult 吗?

    HTH。

    【讨论】:

    • 无需通过item访问当前项目。您可以轻松地使用this