遍历数组并将值插入到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数组中有值,所以这不是问题。有人能找到不合适的地方吗?
答
您在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的符号火灾响应工作正常,否则不要做任何事情。
好的,你知道了。如果可以,请在该阵列上发布更多信息,我很乐意通过清理解释向您发送信息。
请显示您的json –
Json不是问题,当循环和Webid如何放入irk中时是有问题的。因为它没有这个工作。 @PradyutManna – llerdal
在控制台中的任何错误? @llerdal –