AJAX请求的回调不会触发

时间:2011-03-17 19:34:51

标签: .net asp.net-mvc jquery

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

这是我的操作方法的实现:

    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 个答案:

答案 0 :(得分: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);
   }    
});}