我正在使用wiki API,试图从返回的给定文章中获取一系列链接。这是我正在使用的那种JSON:
{
"continue": {
"plcontinue": "22989|0|2007_Rugby_World_Cup",
"continue": "||"
},
"query": {
"normalized": [
{
"from": "paris",
"to": "Paris"
}
],
"pages": {
"22989": {
"pageid": 22989,
"ns": 0,
"title": "Paris",
"links": [
{
"ns": 0,
"title": ", Île-de-France, Seine, Kingdom of France"
},
如您所见,我需要知道pageId才能访问我需要的链接数组。我尝试从plcontinue值中提取它,然后将其插入到我的代码中,但它返回一个未定义的。
这是我的API请求:
$.ajax({
url: "https://en.wikipedia.org/w/api.php?action=query&titles=" + searchTerm + "&pllimit=50&prop=links&format=json",
method: "GET",
dataType: "jsonp" //allow CORS
}).then(function (data) {
var plcontinueArray = data.continue.plcontinue.split("|")
var pageId = plcontinueArray[0];
var links = data.query.pages.pageId.links;
如果在发出请求之前我不知道pageId,我如何访问链接数组?
答案 0 :(得分:2)
与使用点表示法访问对象中的数据的方式相同,您也可以使用类似索引的方法来访问对象的键。
例如:
var obj = { foo: "bar", spam: "eggs" };
var value1 = obj.foo; // value1 = "bar"
var keyName = "spam";
var value2 = obj[keyName]; // value12 = "eggs"
所以对于你的例子,你会做这样的事情 -
...
var pageId = plcontinueArray[0];
var links = data.query.pages[pageId].links;
答案 1 :(得分:0)
您正在错误地访问pageId -
更改此行 -
var links = data.query.pages.pageId.links;
至
var links = data.query.pages[pageId].links;
答案 2 :(得分:0)
您可以使用pages
循环遍历for ... in
对象。
像这样:
...
then(function (data) {
for(var pageId in data.query.pages) {
if (data.query.pages.hasOwnProperty(pageId)) {
console.log(data.query.pages[pageId].links);
}
}
});
希望它有所帮助。