2012-02-14 3 views
1

jQuery를 사용하여 작업을 수행하고 있습니다. 지금List <>를 JsonResult와 함께 반환

$.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()); 

미등록/500 (내부 서버 오류)이 표시됩니다.

이제 jQuery 아약스가 제대로 읽을 수 있도록 개체에서 JSON을 제대로 반환하는 방법에 대해 궁금한 점이 있습니까?

감사

+0

, 일 ... 또는 날려 버릴 수 – jcvegan

+0

다음과 같이 중복 될 수 있습니다. http://stackoverflow.com/questions/3113952/asp-net-mvc-jsonresult-return-500 –

+1

IoC.Resolve () 란 무엇입니까? GetUsers()가 실제로 반환합니까? var를 사용하고 있기 때문에 반환되는 데이터 유형이 JSON으로 변환하려고한다는 것을 알 수 없습니다. –

답변

1

리,

는 사용 본 적이 없다 : 이전

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

및 언급을하지 않을거야. 그러나, 당신은 단순히 즉, statament의 마지막에 .ToList()를 추가로 도망 일 :

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. 
} 
관련 문제