Javascript 从WikipediaAPI的JSON响应中提取URL

Javascript 从WikipediaAPI的JSON响应中提取URL,javascript,jquery,json,ajax,wikipedia-api,Javascript,Jquery,Json,Ajax,Wikipedia Api,我需要从JSON响应中提取图像的URL(也许我可以把它放在一个变量中) 我读 我按照以下示例获取有关页面上图像的信息: https://commons.wikimedia.org/w/api.php?action=query&prop=pageimages&titles=Albert%20Einstein&pithumbsize=100 返回此JSON: { "batchcomplete": "", "query": { "pages": { "

我需要从JSON响应中提取图像的URL(也许我可以把它放在一个变量中)

我读

我按照以下示例获取有关页面上图像的信息:

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"
        }
    }
}
我可以用哪种方式提取图像的URL

我试过这个:

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

但是不起作用。

是的,它不起作用,因为此url:
https://commons.wikimedia.org/w/api.php?action=query&prop=pageimages&titles=Albert%20Einstein&pithumbsize=100
不返回JSON,而是返回HTML。如果需要JSON表示,需要将
&format=JSON
附加到url。

更改
data.query.pages.2061.thumbnail.source
data.query.pages[“2061”].thumbnail.source
,因为不能在点表示法中使用数字

以及警报;将
stg
更改为
stgurl

$.ajax({
键入:“获取”,
url:“https://commons.wikimedia.org/w/api.php?action=query&prop=pageimages&titles=Albert%20Einstein&pithumbsize=100&format=json",
数据类型:“jsonp”,
contentType:“应用程序/json;字符集=utf-8”,
成功:功能(数据){
var urlImage=data.query.pages[“2061”].thumbnail.source;
//var stgurl=JSON.stringify(urlImage);-不必要的JSON.stringify
var stgurl=urimage;
警报(stgurl);
}
})

我试图在本文中使用解决方案:

以这种方式使用递归:

function walk(obj) {
  for (var key in obj) {
    if (obj.hasOwnProperty(key)) {
      var val = obj[key];
      console.log(val);
      walk(val);
    }
  }
}
walk(obj);

它似乎起作用了。

你说的“不起作用”是什么意思?发生了什么事?您是否注意到在
JSON.stringify(urlImage)行中的变量
urlImage
拼写错误?谢谢,我纠正了这一点,但仍然不起作用。谢谢,我添加了“&format=json”,但变量中似乎没有任何内容。谢谢您的回答,但我的代码无法显示警报。我认为pages不是一个数组,但我不知道如何访问它。请原谅我,但我不知道它是如何发生的,我没有这样做。