【发布时间】:2015-11-15 16:13:50
【问题描述】:
我有一个 JSON 对象,其中包含存储在 MySQL 数据库中的数据 ID。我正在遍历 JSON 对象并通过 ajax 将 ID 发送到数据库以返回与该 ID 关联的数据。
在该循环中,返回数据后,我尝试使用以下方法将该数据保存到数组中:
finalArray.push({
'nodeID' : nodeID,
'startTime' : sDisplayTime,
'endTime' : eDisplayTime
});
数据被放入数组中,我可以在循环中使用console.log(finalArray); 来查看它是否输出了正确的数据。我的问题是我无法访问循环之外的整个数组。循环完成后,数组中应该有 3-5 个键,最终输出应该包括返回的所有内容。当我在循环外调用console.log(finalArray); 时,我在控制台中得到一个空白[]。
我在循环开始之前/外部声明 finalArray = []; 数组,所以我认为范围不是问题。
当我像finalArray = { event: [ ] } 那样做,然后像这样填充数据:
finalArray.event.push({
'nodeID': nodeID,
'startTime': sDisplayTime,
'endTime': eDisplayTime
});
我可以在循环外console.log(finalArray); 查看数据。不幸的是,我需要一种可以使用sort() 函数的格式,所以这种方式行不通。
有谁知道为什么我不能用第一种方法访问循环外的数组?
这是循环(为显示而简化):
finalArray = [];
jQuery.each(cookieVal, function(i, v) {
var nodeID = i;
jQuery.ajax({
type: "GET",
url: ajaxurl,
data: "action=get_scheduled_info&nid=" + nodeID,
success: function(data) {
var eventData = JSON.parse(data);
var sDisplayTime = eventData.start_time;
var eDisplayTime = eventData.end_time;
finalArray.push({
'nodeID': nodeID,
'startTime': sDisplayTime,
'endTime': eDisplayTime
});
}
});
});
【问题讨论】:
-
你能显示循环之类的吗?我猜你是在进行异步调用。
-
是的,给我一点时间来简化它的显示。
-
很公平。感谢您的链接。
标签: javascript arrays json scope