Javascript 从WikipediaAPI的JSON响应中提取URL
我需要从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": { "
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不是一个数组,但我不知道如何访问它。请原谅我,但我不知道它是如何发生的,我没有这样做。