2012-06-11 22 views
2

我使用ASP的MVC和我喜欢这个通过jQuery获取jsonString上来空

public List<IncidentPerAreaCount> getIncident() 
    { 
     int RondeboschCounter = 0; 
     int ClaremontCounter = 0; 
     int AthloneCounter = 0; 
     List<IncidentPerAreaCount> IncidentAreaCount = new List<IncidentPerAreaCount>(); 
     IncidentPerAreaCount Rondebosch = new IncidentPerAreaCount(); 
     IncidentPerAreaCount Claremont = new IncidentPerAreaCount(); 
     IncidentPerAreaCount Athlone = new IncidentPerAreaCount(); 

     List<Report> Reports = GetReports(); 
     for (int i = 0; i < Reports.Count(); i++) 
     { 
      if (Reports.AsEnumerable().ElementAt(i).Area == "Rondebosch") 
      { 
       RondeboschCounter++; 
      } 
      else if (Reports.AsEnumerable().ElementAt(i).Area == "Claremont") 
      { 
       ClaremontCounter++; 
      } 
      else if (Reports.AsEnumerable().ElementAt(i).Area == "Athlone") 
      { 
       AthloneCounter++; 
      } 

     } 
     Rondebosch.AreaName = "Rondebosch"; 
     Rondebosch.NumberOfIncidents = RondeboschCounter; 
     Claremont.AreaName = "Claremont"; 
     Claremont.NumberOfIncidents = ClaremontCounter; 
     Athlone.AreaName = "Athlone"; 
     Athlone.NumberOfIncidents = AthloneCounter; 

     IncidentAreaCount.Add(Rondebosch); 
     IncidentAreaCount.Add(Claremont); 
     IncidentAreaCount.Add(Athlone); 

     return IncidentAreaCount; 
    } 

获取数据在我的计划中的一部分。然后我试图通过jQuery

得到这个字符串
var Reports = []; 
    $.ajax({ 
    url: "Home/getIncident", 
    async: false, 
    dataType: 'json', 
    success: function (json) { Reports = json.whatever; } 
    }); 
    alert(Reports); 

但是,警报函数保持空白(即空的文本框),而不是使用数据的json格式的字符串。

请帮忙...

+1

当然是的。欢迎来到* A * JAX –

回答

1

你正在把警报放在错误的地方。

$.ajax({ 
    url: "Home/getIncident", 
    async: false, 
    dataType: 'json', 
    success: function (json) { 
     Reports = json.whatever; 
     alert(Reports); // should be here. 
    } 
}); 

阅读thisthis之前你跳进代码。

+0

的世界尝试过,但弹出的提示信息框仍然是空的 – NoobCoder

1

你可以在ajax的成功函数里面而不是在ajax外面得到你的数据。尝试在成功内移动警报,然后您将获得您的数据。

var Reports = []; 
     $.ajax({ 
     url: "Home/getIncident", 
     async: false, 
     dataType: 'json', 
     success: function (json) { 
       Reports = json.whatever; 
       alert(Reports); //Right place 
     } 
     }); 
     alert(Reports); // Wrong place 
+0

似乎对我来说是正确的。 Async设置为false,Reports是一个超出jquery ajax方法范围的变量。 – Judo

+0

如果我编码“Reports = json”,则警报消息框中的输出为 “[object Object],[object Object],[object Object]” – NoobCoder

0

我看到的第一件事就是你不序列化对象返回。你可以不喜欢它那

return new JavaScriptSerializer().Serialize(your_object); 

,并在客户端,您必须对JSON字符串转换为有效的js对象,我这样做,使用“d”属性附加伤害的JSON响应串

var theObject = $.parseJSON(response.d); 

并且该对象具有您需要的属性。

最后我看到你的对象是一个列表,你可以迭代使用$ .each