代码之家  ›  专栏  ›  技术社区  ›  Leth

从特定的wiki文章中获取链接数组

  •  0
  • Leth  · 技术社区  · 7 年前

    {
      "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值中提取它,然后将其插入代码中,但它返回一个未定义的值。

    $.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;
    

    当我在发出请求之前不知道页面ID时,如何访问链接数组?

    3 回复  |  直到 7 年前
        1
  •  2
  •   Lix    7 年前

    与使用点表示法访问对象中的数据相同,也可以使用类似索引的方法访问对象的键。

    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;
    
        2
  •  0
  •   Ashvin777    7 年前

    您访问的页面ID不正确-

    var links = data.query.pages.pageId.links; var links = data.query.pages[pageId].links;

        3
  •  0
  •   malifa    7 年前

    你可以通过 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);
           }
        }
    });
    

    希望有帮助。