我试图在我的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) {
}
});
谢谢大家!
答案 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);
}
现在一切正常..
感谢所有人的耐心