2017-08-17 93 views
0

我正忙着使用wiki API並試圖從給定文章返回鏈接數組。這是我對工作的那種JSON的:從特定wiki文章中獲取鏈接數組

{ 
    "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

遍歷'data.pages'數組中的對象? –

+0

只需遍歷頁面並獲取它們中的每一個。 'for(pageid in data.query.pages)...'然後獲取'data.query.pages [pageid] .links'。 – GolezTrol

+0

我建議通過'data.query.pages [pageId] .links'訪問它。 – gus27

回答

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; 
0

您不正確訪問PAGEID -

改變這一行 - var links = data.query.pages.pageId.links;var links = data.query.pages[pageId].links;

0

您可以僅使用for ... in循環遍歷pages對象循環。 類似這樣的:

... 

then(function (data) { 
    for(var pageId in data.query.pages) { 
     if (data.query.pages.hasOwnProperty(pageId)) { 
      console.log(data.query.pages[pageId].links); 
     } 
    } 
}); 

希望它有幫助。

相關問題