【发布时间】:2013-03-11 20:15:13
【问题描述】:
这是用从 MediaWiki API 查询 /api.php?action=query&list=querypage&qppage=BrokenRedirects 返回的结果数量填充一个表。然后将结果的数量添加到id中,例如:
// BrokenRedirects
$.getJSON('/api.php?action=query&list=querypage&qppage=BrokenRedirects&format=json', function (data) {
$('#BrokenRedirects').text(data.query.querypage.results.length);
});
但是由于它又被重复了 7 次,我将 qppage 的参数放入一个数组中,并使用了一个 for 循环来缩短整个代码。
var array = ['BrokenRedirects',
'DoubleRedirects',
'Unusedcategories',
'Unusedimages',
'Wantedcategories',
'Wantedfiles',
'Wantedpages',
'Wantedtemplates'];
for (var i = 0; i < array.length; i++) {
$.getJSON('/api.php?action=query&list=querypage&qppage=' + array[i] + '&format=json', function (data) {
$('#' + array[i]).text(data.query.querypage.results.length);
});
}
第一个未循环的版本有效。但是当我添加一个循环时它没有。 $getJSON 部分执行,但随后无法将结果数据添加到 id。我通过 JSLint 运行它,除了抱怨循环中的函数和声明 var i 和 var array 几乎没有帮助。我对javascript相对缺乏经验,所以认为一个变量可能不能在循环中使用两次?除此之外,也许与在循环中使用 id 有关?
【问题讨论】:
-
getJSON 是一个异步调用 REFER: [使用同步 ajax 调用][1] [1]: stackoverflow.com/questions/3419026/…