我想通过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]等 - 当这些对象存在时)。
我可能会对这是一个数组感到困惑,数据是否真的回到了对象的对象?我应该使用$。每个都应该这是一个for循环?如果它应该是for循环我将如何实现?我不确定我做错了什么,所以如果任何人都可以引导我走向正确的方向,我将不胜感激。
你的代码块有点搞砸了,它不包括最后一行。 – DrCord
您正在从控制台输出遍历此数组:'[data.index]' - 但返回的JSON对象(它看起来是一个包含两个对象的数组)中没有“index”属性。 – Pointy
我会说同Pointy一样。或者你使用'each(data,'或者像这样读'data.index [i]',其中一个应该可以工作 – DontVoteMeDown