这是我现在的代码。它完美地列出了页面标题,但链接全部返回“未定义”。如何使用JSON链接列出维基百科页面标题?
function func(json) {
var e = document.getElementById('wiki');
var i;
for (i=0; i < json.query.allpages.length; i++) {
e.innerHTML += i + ": " + '<a href="' + "http://en.wikipedia.org/wiki/" + json.query.link+ '">' + json.query.allpages[i].title + '</a>' + "<br />";
}
}
function getFromWikipedia() {
var txt = document.getElementById('txt');
var e = document.getElementById('wiki');
var o = document.createElement("script");
o.setAttribute("src", "http://en.wikipedia.org/w/api.php?action=query&list=allpages&format=json&apfrom="+txt.value+"&generator=alllinks&callback=func");
e.appendChild(o);
}
追加“&道具=链接”和/或“&发电机= alllinks”的URL似乎并不影响结果。
我想知道我应该包括在这一部分:
'<a href="' + json.query.link+ '">'
为了各自的链接列表的页面标题。 我试过“json.query.allpages [i] .pageID”和“json.query.alllinks”,但它一直没有工作。
编辑: 找到URL并转而执行pageid方法。
与此解决它:
function func(json) {
var e = document.getElementById('wiki');
var i;
for (i=0; i < json.query.allpages.length; i++) {
e.innerHTML += i + ": " + '<a href="' + "http://en.wikipedia.org/?curid=" + json.query.allpages[i].pageid+ '">' + json.query.allpages[i].title + '</a>' + "<br />";
}
}
嘿,由于未知的原因代码不起作用(当我调用函数时没有出现) - 控制台也不会返回任何错误。我尝试将页面更改为所有页面,但链接仍显示为未定义。 – Yuu
你是对的。我已更新我的回答 – schudel
(第一个空白页面是因为https://github.com/wikimedia/mediawiki/blob/master/includes/api/ApiQuery.php#L401) – Rudie