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

Javascript 如何循环jquery返回的JSON数据?,javascript,jquery,json,asp.net-mvc-3,Javascript,Jquery,Json,Asp.net Mvc 3,可能重复: 这是MVC控制器返回的数据,我在成功回调中得到: [{ "_id" : { "$oid" : "4dc8" }, "eid" : { "$oid" : "4da" }, "user" : "bob", "text" : "First comment!!", "dt" : { "$date" : 1304966277978 } }, { "_id" : { "$oid" : "4dc8" }, "eid" : { "$oid" : "4da" }, "user" : "bob",

可能重复:

这是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');
});

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

您可以使用一个简单的
循环:

for (var i = 0, len = results.length; i < len; i++) {
    // do something with results[i].text
}
$.getJSON(“YourControllerHere.XXX”,{},函数(数据){
$。每个(数据、函数(键、值){
$(“#someLocation”).append(“
  • ”+val.text+“
  • ”);//这只是一个示例。您可以在此处对每一行/值对执行一些操作。 }); });
    您应该能够使用此命令单步遍历行和值

    最好的


    T

    这是你今天发布的另一篇文章的副本:)


    您的第一个问题是JSON中没有
    结果[“comments”]
    字段。你得到了一个数组,我认为是注释本身。因此,您需要对其进行迭代。差不多

    $.each(result, function(k, v) { console.log(v.user); });
    
    应该可以,我只是在浏览器里试过了。以下代码遍历行,然后遍历每行的属性:

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

    你的ajax调用看起来是什么样子的?请编辑你的帖子,而不是将代码粘贴到你今天发布的内容中:Adam,没错。我在那里评论说,我将发布另一个只是为了我的第二个问题。我没有得到答案。它在JSFIDLE中工作,但在我的浏览器上不工作。alert('len='+results.length)向我打印json响应中的总字符数,而不是响应中的项数。这就是原因吗?它将json视为纯文本??json是一种文本格式:在添加results=json.parse(results)之后,它似乎工作了&我可以遍历它。为什么我需要这个?我在GET调用中指定了数据类型:“json”,并且我的控制器也返回JsonResult。JSON是一种将Javascript对象作为字符串传输的方法,但它不是Javascript对象。请参阅@Tamler的评论并阅读链接OK。有效的json,但js无法处理它,除非我先将其转换为js对象。但没有看到其他人这样做。
    $.each(result, function(k, v) { console.log(v.user); });
    
    $.each(foo, function(k, row) { $.each(row, function(attr, value) { console.log(attr, value); }) });
    
    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]);   
            }