我正在尝试使用以下代码。我知道在函数中的变量范围内我做的不对,但我无法弄清楚是什么(我主要是设计师,我很高兴我终于明白了JSON的含义)。任何人都可以把我推向正确的方向吗?谢谢:))
var list = new Array();
//Twitter
function twitter(photos){
$.each(photos.results, function(index, photo){
if (photo.entities.media){
list.push(photo.entities.media[0].media_url);
console.log(list); // working here, returns array
}
});
}
var url = "https://search.twitter.com/search.json?callback=?&q=%23pikachu&include_entities=true&count=50";
$.getJSON(url, twitter);
console.log(list); //not working here, returns []
答案 0 :(得分:7)
问题在于订单运行:
您可以通过向日志添加时间戳来验证(例如。console.log(new Date() + ' '+list)
)。
解决问题的最简单方法是在回调结束时调用后续逻辑,而不是在getJSON行下面。
答案 1 :(得分:1)
代码中的参数“twitter”不是“twitter”函数,而是名为“twitter”的变量:
$.getJSON(url, twitter);
您的代码应如下所示:
...
var twitter = (function(photos){
$.each(photos.results, function(index, photo){
if (photo.entities.media){
list.push(photo.entities.media[0].media_url);
console.log(list); // working here, returns array
}
});
});
var url = "https://search.twitter.com/search.json?callback=?&q=%23pikachu&include_entities=true&count=50";
$.getJSON(url, twitter);
...