数组在JSON请求之外消失

Arrays disappear outside of JSON request

本文关键字:消失 请求 JSON 数组      更新时间:2023-09-26

我试图设置一个数组与YouTube视频的各种属性(您可能认为这是有些多余的,但我计划在未来添加其他来源)。我能够将这些值添加到JSON请求中的数组中,但是一旦我退出它,它们就消失了。什么好主意吗?

var socialPosts = new Array(); 
$.getJSON('https://gdata.youtube.com/feeds/api/videos?author=google&max-results=5&v=2&alt=jsonc&orderby=published', function(data) {
    for(var i=0; i<data.data.items.length; i++) { //for each YouTube video in the request
        socialPosts[i]={date:Date.parse(data.data.items[i].uploaded), title:data.data.items[i].title,source:"YouTube", thumbnail:data.data.items[i].thumbnail.hqDefault, url:'http://www.youtube.com/watch?v=' + data.data.items[i].id}; //Add values of YouTube video to array
    }
    console.log(socialPosts[0].date); //This returns the correct data
});
console.log(socialPosts[0].date); //This returns with undefined

您正在尝试访问Ajax asyn调用的结果,这些结果尚未返回。您需要在中使用result回调函数或将结果传递给某些函数

var socialPosts = new Array(); 
$.getJSON('https://gdata.youtube.com/feeds/api/videos?author=google&max-results=5&v=2&alt=jsonc&orderby=published', function(data) {
    for(var i=0; i<data.data.items.length; i++) { //for each YouTube video in the request
        socialPosts[i]={date:Date.parse(data.data.items[i].uploaded), title:data.data.items[i].title,source:"YouTube", thumbnail:data.data.items[i].thumbnail.hqDefault, url:'http://www.youtube.com/watch?v=' + data.data.items[i].id}; //Add values of YouTube video to array
    }
    console.log(socialPosts[0].date); //This returns the correct data
    somefun(socialPosts[0].date); 
});

因为这是一个Ajax函数,它是异步发生的这意味着闭包外的代码在调用完成之前执行