的getJSON没有得到任何数据

问题描述:

我与mvc4和C#的工作的getJSON没有得到任何数据

我有一个控制器动作一样,

[HttpGet] 
    public JsonResult GetChildCategories(int id) 
    { 
     Category cat = new Category(id); 
     List<Category> child = new Categories().ToList(cat); //get two list items when jquery calling 
     return Json(child, JsonRequestBehavior.AllowGet); 
    } 

,我尝试使用jQuery来调用这些动作,

$(document).ready(function() { 
var url = '/Add/GetChildCategories/1'; 
$.getJSON(url, function (data) { 
    alert(data); //alert is not working 
    $.each(data, function (key, val) {   
     alert(key); //alert is not working 
    }); 
}); 
}); 

在调用这些时,列表child包含两项,但该值不在data中。

+0

你的GetChildCategories被调用吗? – vallabha 2014-10-30 06:39:05

+0

@vallabha:是的,它被调用,并在列表中有值 – shyama 2014-10-30 06:39:53

+1

如果你直接从浏览器中打开URL会发生什么?你是否得到一个带有记录的json文件下载?也尝试使用:url ='@ Url.Action(“GetChildCategories”,“ControllerName”,new {id = 1})' – 2014-10-30 06:40:21

如果您直接从浏览器中打开URL,会发生什么情况?你是否得到一个带有记录的json文件下载?

此外,请尝试使用:url ='@ Url.Action(“GetChildCategories”,“ControllerName”,new {id = 1})',它是一种安全的方式来生成更新的输出URL以防您的路由模板发生变化在未来。

发生了什么,如果您只使用$ .get(...)而不是$ .getJson(...)?

+0

@shyama'当命中控制器动作时没有错误'..你检查了在控制器中有一个断点,你的客户端调用已经到达控制器,但无法在客户端上呈现? – 2014-10-30 06:51:43

+0

如果是的话,因为'超出递归限制'说,我想应该有一些深层嵌套在你的对象发生。尝试点击浏览器中的URL并查看是否可以使用记录下载JSON文件.. – 2014-10-30 06:54:19

+0

直接从浏览器中打开URL,并且url ='@ Url.Action(“GetChildCategories”,“ControllerName”,new {id = 1}) ':它显示错误超过了RecursionLimit。 – shyama 2014-10-30 06:54:28

请试试这个

public ActionResult GetChildCategories(int id)  { 
     Category cat = new Category(id); 
     List<Category> child = new Categories().ToList(cat); 
     return JsonConvert.DeserializeObject<List<Category>>(child); 
     } 

或 试着改变你的JS功能

$(document).ready(function() { 
$.ajax({ 
      url: '{BaseURL}/Add/GetChildCategories/1, 
      type: 'GET' 
     }).done(function (data) { 
      var jsonData= JSON.parse(data); 
      alert(jsonData) 
     }); 
}); 

希望这有助于。