遍历数组并将值插入到JSON url中

问题描述:

我正试图从数组中获取具有for循环的值并将其插入到JSON url中。这是代码。遍历数组并将值插入到JSON url中

myConnector.getData = function(table, doneCallback) { 
    datasetWebId.forEach(function(v) { 
     var webId = (v); 
     $.getJSON("https://www.twdc/api/" + webId + "/recorded?starttime=*-3d&endtime=*", function(resp) { 

      tableData = []; 
      resp.Items.forEach(function(item) { 
       item.Items.forEach(function(subItem) { 
        tableData.push({ 
         'name': item.Name, 
         'Timestamp': subItem.Timestamp, 
         'Value': subItem.Value, 
         'Path': item.Path 
        }); 
       }); 
      }); 

     }); 
     table.appendRows(tableData); 
     doneCallback(); 
    }); 

}; 

当它运行时,它击中第一个循环,只是跳过其余的。 datasetWebId数组中有值,所以这不是问题。有人能找到不合适的地方吗?

+1

请显示您的json –

+0

Json不是问题,当循环和Webid如何放入irk中时是有问题的。因为它没有这个工作。 @PradyutManna – llerdal

+0

在控制台中的任何错误? @llerdal –

您在datasetWebId数组的第一项的末尾调用doneCallback,这就是为什么它永远不会有另一个迭代。

myConnector.getData = function(table, doneCallback) { 
    datasetWebId.forEach(function(v) { 
     var webId = (v); 
     $.getJSON("https://www.twdc/api/" + webId + "/recorded?starttime=*-3d&endtime=*", function(resp) { 

     tableData = []; 
     resp.Items.forEach(function(item) { 
      item.Items.forEach(function(subItem) { 
       tableData.push({ 
        'name': item.Name, 
        'Timestamp': subItem.Timestamp, 
        'Value': subItem.Value, 
        'Path': item.Path 
       }); 
      }); 
     }); 

    }); 
    table.appendRows(tableData); 
    }); 
    doneCallback(); //This has been moved. 
}; 

这里有一些事情正在进行。首先,我们不知道“datasetWebId”是什么。这是你迭代发送每个AJAX请求的数组,但是如果它在一个之后退出,那么它应该在运行之前保持这个长度,以确保它实际上具有迭代的数据。

二。你有3个(!)嵌套for循环。这并不令人震惊,这是一个奇怪的数据泄漏问题,因为这是一个有点过度嵌套的主要症状之一。不用担心,我们都在那里。将所有这些都放在可独立测试的独立函数中,然后开始一次一个地运行它们。而且,除非您确定AJAX的符号火灾响应工作正常,否则不要做任何事情。

好的,你知道了。如果可以,请在该阵列上发布更多信息,我很乐意通过清理解释向您发送信息。