2017-05-27 23 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); 
     } 

現在一切工作正常..

感謝所有您的耐心