我正在尝试使用jquery发出JSON请求,第一个JSON请求返回我想要的数据。
在第一次成功JSON请求之后,我想查看第一个JSON请求的结果,并在第二个JSON请求中使用它。
我目前面临的问题是我的第二个JSON请求返回空对象。 有人可以帮我弄清楚为什么我的第二个JSON没有返回什么?
即使我在网站网址上发布第二个JSON网址,它也会显示JSON数据。但是在我的程序中它没有返回任何东西。
这是代码
$(document).ready(function() {
var api_wiki = "https://en.wikipedia.org/w/api.php?action=query&format=json&list=search&srsearch=cat&srwhat=text&callback=?";
var api_wiki_extract = "https://en.wikipedia.org/w/api.php?action=query&format=json&prop=info%7Cextracts&inprop=url&exsentences=1&callback=?&titles=";
var sp;
var linkReady = [];
var linkR;
$.getJSON(api_wiki, function(data) {
sp = data.query.search;
linkR = workWithTheData(sp);
anotherJSON(linkR);
}); //End of getJSON 1
function workWithTheData(sp) {
for (var i = 0; i < sp.length; i++) {
linkReady[i] = api_wiki_extract + sp[i].title;
}
return linkReady;
}
function anotherJSON(linkR){
$.getJSON(linkR[0], function(data1) {
console.log(data1);
});
}
}); //End of document ready
答案 0 :(得分:1)
您需要了解的一些事项:
JSON是一种数据格式。你正在做的是由jQuery提供的HTTP Ajax请求,它以JSON格式返回数据。
您的代码完全正常。你可以看到@Hanlet的link。
在您的第二个请求之后,它将在浏览器的控制台中返回{batchcomplete: "", query: Object}
。一旦你扩展了query
,你就会看到里面的一切。
您可以尝试转换回普通$.ajax
请求并设置async: false
Is it possible to set async:false to $.getJSON call