2017-10-08 66 views
-1

我需要從JSON響應中提取圖像的URL(也許我可以把它放在一個變量中)。從維基百科api的JSON響應中提取一個URL

我讀this page on the MediaWiki API help

我按照這個例子來獲取圖像的頁面上的信息:

https://commons.wikimedia.org/w/api.php?action=query&prop=pageimages&titles=Albert%20Einstein&pithumbsize=100 

返回該JSON:

{ 
"batchcomplete": "", 
"query": { 
    "pages": { 
     "2061": { 
      "pageid": 2061, 
      "ns": 0, 
      "title": "Albert Einstein", 
      "thumbnail": { 
       "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/d/d3/Albert_Einstein_Head.jpg/75px-Albert_Einstein_Head.jpg", 
       "width": 75, 
       "height": 100 
      }, 
      "pageimage": "Albert_Einstein_Head.jpg" 
     } 
    } 
} 

在哪種方式我可以提取圖片的網址?

我嘗試這樣做:

$.ajax({ 
    type:"get", 
    url:"https://commons.wikimedia.org/w/api.php?action=query&prop=pageimages&titles=Albert%20Einstein&pithumbsize=100&format=json", 
    dataType:"jsonp", 
    contentType:"application/json; charset=utf-8", 
    success: function(data) { 
     var urlImage = data.query.pages.2061.thumbnail.source; 
     var stgurl = JSON.stringify(urlImage); 
     alert(stg); 
    } 
}) 

,但不起作用。

+0

你是什麼意思的「不工作」?到底是怎麼回事?你有沒有注意到你在JSON.stringify(urlimage)行中拼寫變量'urlImage'? – louisfischer

+0

謝謝,我糾正這一點,但仍然無法正常工作。 – Jeek

回答

-1

是的,它不工作,因爲這個網址:https://commons.wikimedia.org/w/api.php?action=query&prop=pageimages&titles=Albert%20Einstein&pithumbsize=100不會返回JSON,但HTML。如果您想要JSON表示,則需要將&format=json附加到您的網址。

+0

謝謝,我添加'&format = json',但在變量中似乎沒有任何東西。 – Jeek

-1

data.query.pages.2061.thumbnail.source更改爲data.query.pages["2061"].thumbnail.source,因爲您不能以點表示法使用數字。

而且還有警報;改變stgstgurl

$.ajax({ 
 
    type:"get", 
 
    url:"https://commons.wikimedia.org/w/api.php?action=query&prop=pageimages&titles=Albert%20Einstein&pithumbsize=100&format=json", 
 
    dataType:"jsonp", 
 
    contentType:"application/json; charset=utf-8", 
 
    success: function(data) { 
 
     var urlImage = data.query.pages["2061"].thumbnail.source; 
 
     //var stgurl = JSON.stringify(urlImage); - unnecessary JSON.stringify 
 
     var stgurl = urlImage; 
 
     alert(stgurl); 
 
    } 
 
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

+0

謝謝您的回答,但我的代碼無法顯示警報。我認爲這些頁面不是一個數組,但我不知道我可以通過哪種方式訪問​​它。 – Jeek

+0

哇!我喜歡反對票,不是嗎? :想着 – lshettyl

+0

原諒我,但我不知道它會如何發生,我沒有這樣做。 – Jeek

-1

我試圖用在這篇文章的解決方案:

iterating through json object javascript

使用遞歸以這樣的方式

function walk(obj) { 
    for (var key in obj) { 
    if (obj.hasOwnProperty(key)) { 
     var val = obj[key]; 
     console.log(val); 
     walk(val); 
    } 
    } 
} 
walk(obj); 
它似乎工作3210