2014-10-30 96 views
0

我與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

回答

-1

如果您直接從瀏覽器中打開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

0

請試試這個

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) 
     }); 
}); 

希望這有助於。