如何使用JSON列出包含链接的维基百科页面标题?

Yuu*_*Yuu 5 javascript json wikipedia-api

这是我目前的代码.它完美地列出了页面标题,但链接都返回'undefined'.

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);
}
Run Code Online (Sandbox Code Playgroud)

将"&prop = links"和/或"&generator = alllinks"附加到URL似乎不会影响结果.

我想知道我应该在这部分中包含什么:

'<a href="' + json.query.link+ '">'
Run Code Online (Sandbox Code Playgroud)

为了列出页面标题及其各自的链接.我试过"json.query.allpages [i] .pageID"和"json.query.alllinks",但它一直没有用.

编辑: 放弃查找URL并转而使用pageid方法.

解决了这个问题:

e.innerHTML += i + ": " + '<a href="'+ "http://en.wikipedia.org/wiki/?curid="+  json.query.allpages[i].pageid + '">' +  json.query.allpages[i].title + '</a>' + "<br />";
Run Code Online (Sandbox Code Playgroud)

sch*_*del 2

您可以直接使用 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 />";
  }
}
Run Code Online (Sandbox Code Playgroud)