Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/446.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法在循环外部访问Javascript数组_Javascript_Arrays_Json_Scope - Fatal编程技术网

无法在循环外部访问Javascript数组

无法在循环外部访问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

我有一个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()
函数,所以这种方式不起作用

有人知道为什么我不能用第一种方法访问循环外的数组吗

以下是循环(简化显示):


您不应该在迭代中进行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
        }
    });