2011-09-15 30 views
0

我阿贾克斯块看起来像这样:JSON结果从MVC使用Ajax没有显示

$('#btnTest').click(function(){ 
     $.getJSON('/User/ViewMessages',function(result) { 
      // TODO: update the DOM with the items 
      $("table#tblMessages").append("<tr><td>"+result.MESSAGETEXT+"</td><td>"+result.DATESENT+"</td>"); 
     }); 
    }); 

我在我的控制器动作看起来像这样:

 public ActionResult ViewMessages() 
    { 
     var recipient = Convert.ToInt32(HttpContext.Session["User_Id"]); 
     var query = (from m in context.Messages 
        from rec in context.Recipients 
        where rec.RECIPIENT == recipient 
        where rec.MESSAGEID == m.MESSAGEID 
        select new 
        { 
         m.MESSAGETEXT, 
         m.DATESENT 
        }).ToList(); 
     return Json(query.ToList()); 
    } 

调试时,我的查询变量的回报: {MESSAGETEXT =“seresr”,DATESENT = {2011年9月15日11时06分45秒}}

事情是,我的表是添加“undefined”为我的价值观。我哪里出错了?我已经添加了maproute,但我仍然运气不佳。

回答

1

它看起来像你正在返回一个列表,它将以JSON形式表示为一个数组。所以你的result对象是一个JavaScript数组而不是单个对象。要通过所有的项目循环,并添加一个表行的每个,尝试这样的事情:

$.getJSON('/User/ViewMessages', function(result) { 
    for (var i in result) { 
     var row = result[i]; 
     $("table#tblMessages").append("<tr><td>" + row.MESSAGETEXT 
      + "</td><td>" + row.DATESENT + "</td>"); 
    } 
}); 
+0

/捂脸时刻,谢谢你。 –