我有一个返回JSON的MVC控制器。我想使用jQuery读取/获取JSON并遍历JSON项目/行。
基本上,我正在阅读一堆评论,然后逐一显示评论。
有人有代码示例吗?
我正确地获取了json。请参阅下面的返回数据。
$.ajax( { type: "GET", url: "/comment/GetComments", dataType: "json", data: "blog_id=100&page_size=5&page_no=1", success: function (result) { //loop the data.. how do I loop json? }, error: function (req, status, error) { alert('Error getting comments'); } }); My controller: [HttpGet] public ActionResult GetComments(string blog_id, int page_size, int page_no) { try { List<Comment> comments = ReadCommentsFromDB(); if(comments .Count > 0) return Json(new { comments = cmts.ToJson() }, JsonRequestBehavior.AllowGet); else return Json(new { comments = "none" },, JsonRequestBehavior.AllowGet); } catch (Exception ex) { return Json(new { comments = ex.ToString() }, JsonRequestBehavior.AllowGet); } }
谢谢
编辑:
如何循环这些由控制器返回的json?我需要循环3次,然后对于每一行,我需要访问该行中的所有键和值。
[{ "_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 } } ]
第一个问题的答案是允许Json在GET中工作。杰森通常只在一个职位上工作。通过在控制器中使用以下return方法(使用您的return语句之一),可以在GET中允许Json。
return Json(new { comments = "none" }, JsonRequestBehavior.AllowGet)
编辑: 您也可以返回,JsonResult而不是ActionResult如下所示。
JsonResult
ActionResult
public ActionResult GetComments(string blog_id, int page_size, int page_no) { try { List<Comment> comments = ReadCommentsFromDB(); // Assuming that Comments will be an empty list if there are no data return Json(comments, JsonRequestBehavior.AllowGet) } catch (Exception ex) { return Json(new { comments = ex.ToString() }, JsonRequestBehavior.AllowGet)); } }