2012-02-14 114 views
1

我正在使用jQuery來使用我的操作。用JsonResult返回一個List <>

$.ajax({ url: '', 
      data: 'json', 
      type: 'post', 
      dataType: options.dataType, 
      async: false, 
      success: function (obj) { returnValue = obj; } 
     }); 

現在....

,如果我回到這個...

var test1 = Json(new { Message = "Any message here.", Status="True" }); 

在我的Ajax調用返回就好了..

但..如果我退還這個(EF用戶列表)

var test2 = Json(IoC.Resolve<IUserService>().GetUsers()); 

我將得到undefined/500(內部服務器錯誤)。

現在的問題是如何從對象中正確地返回JSON,以便jQuery ajax可以正確讀取它?

感謝

+0

我有同樣的問題,是因爲該名單是長傳給罰球 – jcvegan 2012-02-14 16:21:13

+0

可能是這樣的一個副本:http://stackoverflow.com/questions/3113952/asp-net-mvc-jsonresult-return-500 – 2012-02-14 16:22:19

+1

什麼是IoC.Resolve ()。GetUsers()實際返回?既然你正在使用var我不能告訴你正試圖轉換爲JSON返回什麼樣的數據類型。 – 2012-02-14 16:23:24

回答

1

利,

從未見過這種用法:

var test2 = Json(IoC.Resolve<IUserService>().GetUsers()); 

之前我不會發表評論。但是,您可能逃脫只是增加一個.ToList()到s​​tatament結束,即:

var test2 = Json(IoC.Resolve<IUserService>().GetUsers().ToList()); 

的原因問題是由於這樣的事實,你還沒有列舉的對象了在試圖填充json對象之前,因此您會遇到各種延遲和對象引用問題。通過添加ToList(),可以減輕這些問題,因爲該對象在命中Json()方法之前已完全枚舉。

它可能只是工作,...或者你吹跑了:)

0
public ActionResult MethodName(){ 
var returnList = IoC.Resolve<IUserService>().GetUsers().ToList(); 
retun JSON(returnList,JSONRequestBehaviour.AllowGet); 
} 

jQuery函數

success: function (obj) { 
alert(obj.d.ListProperty); 
// you can access all the properties you have in the list. 
} 
相關問題