无法在循环外部访问Javascript数组
我有一个JSON对象,其中包含存储在MySQL数据库中的数据ID。我循环遍历JSON对象,并通过ajax将ID发送到数据库,以返回与该ID关联的数据 在该循环中,返回数据后,我尝试使用以下方法将该数据保存到数组:无法在循环外部访问Javascript数组,javascript,arrays,json,scope,Javascript,Arrays,Json,Scope,我有一个JSON对象,其中包含存储在MySQL数据库中的数据ID。我循环遍历JSON对象,并通过ajax将ID发送到数据库,以返回与该ID关联的数据 在该循环中,返回数据后,我尝试使用以下方法将该数据保存到数组: finalArray.push({ 'nodeID' : nodeID, 'startTime' : sDisplayTime, 'endTime' : eDisplayTime }); 数据被放入数组中,我可以使用console.log(finalArray
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()
函数,所以这种方式不起作用
有人知道为什么我不能用第一种方法访问循环外的数组吗
以下是循环(简化显示):
您不应该在迭代中进行AJAX调用——相反,您可以迭代cookieVal并生成一个nodeID数组,以发送到服务器端脚本并返回一个数组
例如:
var finalArray = [];
var sendArray = [];
jQuery.each(cookieVal, function(i, v) {
sendArray.push(i);
});
jQuery.ajax({
type: "POST",
url: ajaxurl,
data: {action: "get_scheduled_info", data: sendArray},
success: function(data) {
var eventData = JSON.parse(data);
var sDisplayTime = eventData.start_time;
var eDisplayTime = eventData.end_time;
// Loop round each item and add it to finalArray
}
});
这将节省大量请求,并允许您正确处理响应
上面的代码只是一个示例,因此未经测试
如果您有任何问题,请告诉我。您能展示一下循环等吗?我猜你是在打一个异步电话。是的,给我一分钟时间来简化它以便显示。这很公平。谢谢你的链接。
var finalArray = [];
var sendArray = [];
jQuery.each(cookieVal, function(i, v) {
sendArray.push(i);
});
jQuery.ajax({
type: "POST",
url: ajaxurl,
data: {action: "get_scheduled_info", data: sendArray},
success: function(data) {
var eventData = JSON.parse(data);
var sDisplayTime = eventData.start_time;
var eDisplayTime = eventData.end_time;
// Loop round each item and add it to finalArray
}
});