【发布时间】:2010-01-07 14:58:56
【问题描述】:
像我之前的其他人一样,我在 Javascript 的范围内苦苦挣扎。 (那并试图阅读该死的东西)。我已经检查了关于这个问题的一些先前的线程,但我似乎无法让它们正确地应用于我的问题。
在下面的示例中,我想在数组完全填充后操作 tagsArr 数组中的值。我在填充它的函数范围之外声明了 tagsArr 变量,以便全局访问它。但该变量似乎没有我期望的范围 - tagsArr.length 在第 16 行调用输出到控制台时为 0。
$(function(){
var apiKey = [myapikey];
var tags = '';
var tagsArr = new Array();
$.getJSON('http://api.flickr.com/services/rest/?&method=flickr.people.getPublicPhotos&api_key=' + apiKey + '&user_id=46206266@N05&extras=date_taken,tags&format=json&jsoncallback=?', function(data){
$.each(data.photos.photo, function(i, item) {
var photoID = item.id;
$.getJSON('http://api.flickr.com/services/rest/?&method=flickr.photos.getInfo&api_key=' + apiKey + '&photo_id=' + photoID + '&format=json&jsoncallback=?', function(data){
if (data.photo.tags.tag != '') {
$.each(data.photo.tags.tag, function(j, item) {
tagsArr.push(item.raw);
});
}
});
tags = tagsArr.join('<br />');
console.debug(tagsArr.length);
});
$('#total-dragged').append(data.photos.total);
$('#types-dragged').append(tags);
});
});
【问题讨论】:
标签: javascript jquery ajax asynchronous scope