Ajax中的JSONArray循环

时间:2017-05-27 20:10:57

标签: java jquery ajax

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

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) {

    }

});

谢谢大家!

4 个答案:

答案 0 :(得分:0)

下面的代码片段使用JQuery迭代json数组

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

答案 1 :(得分:0)

问题在于功能success中的数据。

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

答案 2 :(得分: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);
    }
}

答案 3 :(得分: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

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

现在一切正常..

感谢所有人的耐心