【问题标题】:JSONArray Loop in AjaxAjax 中的 JSONArray 循环
【发布时间】:2017-05-27 20:10:57
【问题描述】:

我试图在我的 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) {

    }

});

谢谢大家!

【问题讨论】:

  • 请澄清问题。你想完成什么?
  • 我只需要循环 jsonarray。这是由 Myservlet 传递的。我正在寻找但我找不到解决方案,你能帮我吗?日期是一个 jsonArray

标签: java jquery ajax


【解决方案1】:

下面的代码 sn-p 使用 JQuery 遍历 json 数组

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

【讨论】:

  • 确保您的数据是否为 ​​json 格式。如果已经是json格式,则跳过解析json。同时检查json的格式。
  • 好的,谢谢,但没有工作:(,我确定我的数据是 json 格式
【解决方案2】:

问题是函数success中的数据是什么。

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

【讨论】:

  • alert(JSON.stringify(data)) 我看到了内存地址,["bean.Campionato@149fd83e","bean.Campionato@560ca2a0"]
【解决方案3】:

您响应中的数据 (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);
    }
}

【讨论】:

  • 同样的答案,不起作用,现在我尝试修改我的 servlet 中的某些内容,也许我在将我的数组放入 JSONArray 时出错了
【解决方案4】:

伙计们,我意识到出了什么问题,如何将数据放入 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);
        }

现在一切正常..

感谢大家的耐心等待

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-07-30
    • 2012-12-18
    • 1970-01-01
    • 1970-01-01
    • 2017-07-27
    • 2018-06-05
    • 2014-10-31
    相关资源
    最近更新 更多