Javascript 迭代数组并将值插入JSON url
我试图从带有for循环的数组中获取一个值,并将其插入JSON url。这是代码Javascript 迭代数组并将值插入JSON url,javascript,jquery,arrays,json,Javascript,Jquery,Arrays,Json,我试图从带有for循环的数组中获取一个值,并将其插入JSON url。这是代码 myConnector.getData = function(table, doneCallback) { datasetWebId.forEach(function(v) { var webId = (v); $.getJSON("https://www.twdc/api/" + webId + "/recorded?starttime=*-3d&endtime=*"
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”。毫无疑问,这是您正在迭代发送每个AJAX请求的数组,但是如果它在一个请求之后退出,您应该
console.log
在它运行之前记录它的长度,以确保它确实有数据要迭代
第二。您有3个(!)嵌套的for循环。有一个奇怪的数据泄漏问题一点也不令人震惊,因为这是过度嵌套的主要症状之一。别担心,我们都去过。将所有这些都放在可以独立测试的单独函数中,然后开始一次运行一个函数。在确保AJAX的symbol fire响应正常工作之前,不要做任何事情
好的,你明白了。如果可以的话,请发布关于该数组的更多信息,我很乐意为您发送一份经过清理的解释。您在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.
};
请说明您的jsonJson不是问题所在,在使用循环时存在一些问题,以及Webid是如何放入irk的。因为没有它就行了@Pradyutmanaa控制台中有错误吗@勒达利认为这是另一个问题,就像一个AJAX调用(或多个调用)。我怀疑CORS是罪犯。