如何循环jquery返回的JSON数据?

时间:2011-05-10 18:26:51

标签: javascript jquery json asp.net-mvc-3

  

可能重复:
  How do I return JSON and loop through the returned json in jQuery in MVC app?

这是我的MVC控制器返回的数据,我在成功回调中得到了这个:

[{ "_id" : { "$oid" : "4dc8" }, "eid" : { "$oid" : "4da" }, "user" : "bob", "text" : "First comment!!", "dt" : { "$date" : 1304966277978 } }, 
 { "_id" : { "$oid" : "4dc8" }, "eid" : { "$oid" : "4da" }, "user" : "bob", "text" : "Second comment!!", "dt" : { "$date" : 1304966347677 } }, 
 { "_id" : { "$oid" : "4dc8" }, "eid" : { "$oid" : "4da" }, "user" : "bob", "text" : "Third comment!!", "dt" : { "$date" : 1304966493240 } }
]

控制器:

[HttpGet]
public JsonResult GetComments(params...)
{
   return Json(new { comments = GetFromDB().ToJson() }, JsonRequestBehavior.AllowGet);
}

问题: 我尝试了几种循环行的方法。但似乎无限循环。

$.ajax(
        {
            type: "GET",
            url: "/comment/GetComments",
            dataType: "json",
            data: "app=" + app + "&eid=" + eid + "&pg=" + pg + "&pgs=" + pgs,
            success: function (result) {
                $.each(result[comments], function () {
                   $.each(this, function (k, v) {
                        alert('this a column or attribute');
                   });
                   alert('end of row');
               });
            },
            error: function (req, status, error) {
                alert('Error=' + error + ' & Status=' + status);
            }
        });   

也尝试过:

$.each(result["comments"], function (key, value) {
   alert('comment found');
});

如何循环行&访问每个属性的值?

5 个答案:

答案 0 :(得分:4)

您可以使用简单的for循环:

for (var i = 0, len = results.length; i < len; i++) {
    // do something with results[i].text
}

See example →


编辑:如果你需要先将JSON字符串转换为Javascript对象,那么在循环之前你应该:

results = JSON.parse(results);

答案 1 :(得分:1)

$.getJSON("YourControllerHere.XXX",{}, function(data){
    $.each(data, function(key, val) {
        $('#someLocation').append('<li>' + val.text + '</li>'); //This is just an example. You can do something with each row/ value pair here.
    });
});

您应该可以使用此步骤遍历行和值。

最佳,

Ť

答案 2 :(得分:1)

这是今天另一篇文章的重复 - 您发布了吗? :)

How do I return JSON and loop through the returned json in jQuery in MVC app?

答案 3 :(得分:1)

您的第一个问题是JSON中没有result["comments"]字段。你得到一个数组,我假设是评论本身。所以你需要迭代它。像

这样的东西
$.each(result, function(k, v) { console.log(v.user); });

应该可以工作,我只是在浏览器中尝试过。以下代码遍历行,然后遍历每行的属性:

$.each(foo, function(k, row) { $.each(row, function(attr, value) { console.log(attr, value); }) });

答案 4 :(得分:1)

for(var key in json)
    for(var key in (obj = json[key]))
        {
            //obj holds the current object in the json array
            console.log(obj[key]);   
        }