我有一个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。
答案 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);
}
});}