Я пытаюсь выполнить итерацию данных об успехе в вызове AJAX. Данные, при входе в консоль выглядит следующим образом:Итерирование через массив объектов с помощью jquery
[Object, Object]
0: Object
messages: Array[0]
sid: 534
__proto__: Object
1: Object
messages: Array[0]
sid: 535
Javascript Я использую это:
function startMsgCheck() {
msgCheck = setInterval(function() {
$.ajax({
url: '/sepanel/chat/check_for_msg',
type:'POST',
dataType: "json",
success: function(data) {
console.log(data);
$.each([data], function(i, val){
var SID = data[i].sid
if (data[i].messages.message_id == $('#chat_message_ID_' + SID).val()) {
return false;
}
else {
var buildMsg = '<p><b>' + data[i].messages.name + '</b>(' + data[i].messages.time_stamp + ')<b>:</b> ' + data[i].messages.message + '</p>'
$('#chat_messageID_' + SID).val(data[i].messages.message_id).text();
$(buildMsg).appendTo("#tab-" + SID);
$("#tab-" + SID).prop({ scrollTop: $("#tab-" + SID).prop("scrollHeight") });
if (data.name == data[i].messages.agent_name){
return false;
}
else {
$('#li_' + SID).removeClass('active');
$('#li_' + SID).removeClass('inactive');
$('#li_' + SID).addClass('notify');
}
}
});
}
});
}, 1000);
}
У меня проблема в том, что это только работает должным образом для первого объекта в массив. Я могу получить доступ к значениям для объекта [0], но он не будет проходить через [1] (или [2], [3] и т. Д. - когда эти объекты существуют).
Возможно, я смущен тем, что это массив, являются ли данные, возвращающиеся на самом деле объектом объектов? должен ли я использовать $ .each вообще, если это будет цикл for? если это будет цикл for, как бы я это реализовать? Я не уверен, что я делаю неправильно, поэтому, если кто-то может направить меня в правильном направлении, я был бы признателен.
Ваш кодовый блок немного испорчен, он не включает последнюю строку. – DrCord
Вы повторяете этот массив: '[data.index]' - из вашего вывода на консоль, однако в возвращаемом объекте JSON (который, как представляется, является массивом с двумя объектами) нет свойства «index». – Pointy
Я бы сказал то же самое, что и Pointy. Или вы используете 'each (data,' или читаете как этот 'data.index [i]'. Один из этих двух должен работать. – DontVoteMeDown