2017-05-27 45 views
-2

我试图在我的js文件中循环一个JSONArray,并且失败了。 有人可以帮我吗? 这是我的servlet代码:Ajax中的JSONArray Loop

ArrayList<Campionato> campionati = DBManager.getInstance().getCampionatoDao().query(); 

    JSONArray jsonArray = new JSONArray(campionati); 
    resp.getWriter().println(jsonArray); 

,这是我的Ajax代码:

$.ajax({ 
    type: "GET", 
    url: "MyServlet", 
    dataType : "json", 
    success: function(data){   

    alert("lenght "+ data.length); //this work but if i try data[0] it say me undefined 

    //I don't know what should I put here for looping 

    }, 
    error : function(data) { 

    } 

}); 

谢谢大家!

+0

请澄清的问题。你想达到什么目的? – Difster

+0

我只需要循环jsonarray。哪些是由Myservlet传递的。我正在寻找,但我找不到解决方案,你能帮助我吗? 日期是jsonArray –

回答

0

下面的代码段迭代过使用JQuery

data = $.parseJSON(data); 
    $.each(data, function(i, item) { 
     alert(item); 
    }) ; 
+0

这不起作用。不管怎样,谢谢你。 –

+0

确保您的数据是json格式或不。如果它已经是json格式,那么跳过解析json。并且检查json的格式。 –

+0

好的,谢谢,但没有工作:(确保我的数据是JSON格式 –

0

问题JSON数组是什么样的数据在功能success

使用console.log(data)alert(JSON.stringify(data))来看看它。

+0

警报(JSON.stringify(数据))与此我看到内存地址,[“[email protected]”,“bean.Campionato @ 560ca2a0“] –

0

您的回复中的数据(success: function(data){)是一个对象,包含元数据和您期望在其data属性中的数据。所以,你想要做的是得到实际的数据从你的反应和循环的阵列,它包含:

success: function(data){ 
    let d = data.data; // now d holds your response data - array 
    for (let x of d) { 
     console.log(x); 
    } 
} 
+0

相同的答案,不工作,现在我尝试修改我的servlet中的东西,也许我错了东西把我的数组放在JSONArray –

0

伙计们,我意识到什么是错的,如何把数据在jsonarray。

的正确方法是

final JSONObject obj = new JSONObject(); 
    final JSONArray array = new JSONArray(); 

    try { 
     for (final Campionato campionato : campionati) { 

      final JSONObject jsonObj = new JSONObject(); 

      jsonObj.put("idCampionato", campionato.getIdCampionato()); 
      jsonObj.put("numPartecipanti", campionato.getNumPartecipanti()); 
      jsonObj.put("partecipantiTotali", campionato.getPartecipantiTotali()); 
      jsonObj.put("attivo", campionato.getAttivo()); 

      array.put(jsonObj); 

     } 

     obj.put("campionati", array); 
    } catch (JSONException e) { 
     e.printStackTrace(); 
    } 

    resp.setContentType("application/json"); 
    resp.getWriter().print(obj); 

和阿贾克斯

$.ajax({ 
    type: "GET", 
    url: "provaServlet", 
    dataType : 'json', 
    success: function(data){ 
     var campionati = data.campionati; 
     var div = $('#cAttivi'); 
     div.empty(); 

     for (var i = 0, length = campionati.length; i < length; ++i) { 
      var campionati = campionati[i]; 
      var stringToAppend = "<div> "+ campionati.idCampionato +"</div>"; 
      div.append(stringToAppend); 
     } 

现在一切工作正常..

感谢所有您的耐心