我正在尝试编写一个小维基百科客户端,除其他外,它可以通过维基百科API从随机文章中获取一个片段。我想通过使用jQuery从此API调用中提取随机文章来实现此目的:https://en.wikipedia.org/w/api.php?action=query&generator=random&grnnamespace=0&prop=extracts&exchars=500&format=jsonfm
问题是我不知道要调用什么来获取标题并在返回的JSON对象中提取。如果我调用我的对象result
,那么我基本上需要访问result.query.pages.(thepageid).title
和result.query.pages.(thepageid).extract
,但由于pageid是随机的,我不知道写什么而不是(thepageid)
- 我已经尝试过result.query.pages [0],但这似乎不起作用。
有关如何处理此事的任何想法?
答案 0 :(得分:0)
使用jQuery,您可以执行$.getJSON()并提取title
和extract
,如下所示:
$.getJSON('https://en.wikipedia.org/w/api.php?action=query&generator=random&grnnamespace=0&prop=extracts&exchars=500&format=json&callback=?', function(response) {
var pages = response.query.pages,
id = Object.keys(pages)[0],
randomPage = pages[id];
console.log(randomPage.title);
console.log(randomPage.extract);
});
.as-console-wrapper { max-height: 100% !important; top: 0; }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
答案 1 :(得分:0)
如果可用,您可能希望在<script>
var linkHome;
function validateform() {
var uid = document.getElementById("form1").elements[0].value;
var pwd = document.getElementById("form1").elements[1].value;
if (uid === "admin" && pwd === "admin") {
document.getElementById("demo1").innerHTML = "Found elements in the form.";
linkHome = "/MenuDemo1/src/adminHome.jsp";
} else {
linkHome = "/MenuDemo1/src/userHome.jsp";
}
location.href = linkHome;
}
</script>
上使用Object.values
。这将为您提供包含result.query.pages
键的对象列表。
extract
其他解决方案,有更多的ID到值对,你可以迭代
// first element
var page = Object.values(result.query.pages)[0];
console.log(page.title);
答案 2 :(得分:0)
$.getJSON('https://en.wikipedia.org/w/api.php?action=query&generator=random&grnnamespace=0&prop=extracts&exchars=500&format=json&formatversion=2&callback=?', function(response) {
console.log(response.query.pages[0].extract);
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
&#13;