2011-03-17 116 views
0

我有一个MVC操作方法,我想返回一个JSON格式的元素列表到一个AJAX请求的回调函数。但是,当发送带有JSON元素数组的action方法的响应时,回调函数不会触发。AJAX请求回调不会触发

这是我的行动方法的实现:

public JsonResult ListAnexos(string idRelatorio) 
    { 

     EasyClinicEntities entities = new EasyClinicEntities(); 

     IQueryable<EasywebAnexos> _list = from EasywebAnexos in entities.EasywebAnexos 
               where EasywebAnexos.IdRelatorios == idRelatorio 
               select EasywebAnexos; 


      return Json(new { List = _list.ToList().ToArray() }, JsonRequestBehavior.AllowGet); 

}

我的AJAX请求代码:

function makeRefreshAnexos(relatorio) { 
    $.ajax({ 
     type: "GET", 
     url: "/Anexos/ListAnexos?idRelatorio="+relatorio, 
     success: function (jsonObject) { 

      alert(jsonObjct); 

     } 
    }); 
} 

当我试图发送一个JSON对象像上面的代码,回调函数工作正常。

public JsonResult ListAnexos(string idRelatorio){ 
    return Json(new {id="just for test"},JsonRequestBehavior.AllowGet); 
} 

我使用.NET Framework 4.0和MVC 2

+1

你可能会得到一个错误。检查Firebug。 – SLaks 2011-03-17 19:37:47

+1

您是否在Fiddler/Firebug中观察过Http请求通过了什么? – WorldIsRound 2011-03-17 19:55:41

回答

1

我一直在使用EF创建的类为JSON回报类和错误不会立即显现时遇到的问题。如果该类具有任何导航属性,则由于序列化循环,JSON序列化程序将失败。解决这个问题的简单方法是在EF设计器中为您的导航属性提供内部getter访问器。

如果你想要一个简单的方法来检索在Javascript代码中的错误,你可以使用这个快捷,简便的调试:

function makeRefreshAnexos(relatorio) { 
$.ajax({ 
    type: "GET", 
    url: "/Anexos/ListAnexos?idRelatorio="+relatorio, 
    success: function (jsonObject) { 
     alert(jsonObjct); 
    }, error: function(errorData){ 
     alert(errorData); 
    }  
});}