gpt4 book ai didi

javascript - $.getJSON 只返回部分和一个空数组

转载 作者:行者123 更新时间:2023-11-30 10:53:35 27 4
gpt4 key购买 nike

我正在创建一个对象来处理 YouTube API,我有两种方法:

  • getCommentList - 获取当前上传的 url,例如 http://gdata.youtube.com/feeds/api/videos/VIDEO_ID/comments?alt=json 并返回一个对象数组 - 评论的作者和评论的内容。
  • getEntriesObject - 返回一个包含每个上传条目对象的数组,我们有标题、缩略图和从 getCommentList
  • 返回的评论列表

我的 jQuery 代码:

var Youtube = {

getCommentObject : function(url){
if( url ){
var currentCommentFeed = {},
commentsList = [];

$.getJSON(url,function(data){
$.each(data.feed.entry,function(index){
currentCommentFeed = this;

commentsList.push({
author : currentCommentFeed.author[0].name.$t,
content : currentCommentFeed.content.$t
});

});

return commentsList;
});

}
},

getEntriesObject : function(){
var username = 'SOMEYOUTUBEUSERHERE',
url = 'http://gdata.youtube.com/feeds/api/users/' + username + '/uploads?alt=json',
currentEntry = {},
currentObject = {},
entryList = [];

// Scope fix
var that = this;

$.getJSON(url,function(data){
$.each(data.feed.entry, function(index){

// Caching our entry
currentEntry = this;

// Adding our entry title and thumbnail
currentObject = {
title: currentEntry.title.$t
};

if(currentEntry.media$group.media$thumbnail.length == 4)
currentObject['thumbnail'] = currentEntry.media$group.media$thumbnail[3].url;

// Let`s get the comments - undefined....
currentObject['comments'] = that.getCommentObject(currentEntry.gd$comments.gd$feedLink.href + "?alt=json");

console.log(currentObject);
entryList.push(currentObject);
});
});

return entryList;

}

/*

entry[i].title.$t
entry[i].gd$comments.gd$feedLink.href + "?alt=json"
entry[i].media$group.media$thumbnail[3]

// Comments
entry[i].author.name.$t
entry[i].author.content.$t
*/
};

我有 console.log(currentObject) 并且正在获取标题。但是我没有得到缩略图 URL 和评论。

此外,当我运行 getEntriesObject 时,我得到一个空数组。

最佳答案

当您在 $.getJSON 的回调中调用 return 时,您只返回该回调函数,而不是“外部”getCommentObject。因此,当您稍后调用 that.getCommentObject 时,您不会得到任何返回 (undefined)。

getCommentObject: function(url){
if( url ){

// Snip ...

$.getJSON(url,function(data){

// Snip ...

return commentsList; // <- Here
});

}
}

要修正这个,让 getCommentObject 接受一个回调函数。

getCommentObject: function(url, callback){
if( url ){

// Snip ...

$.getJSON(url,function(data){

// Snip

// Remove the return statement
callback(commentsList);
});

}
}

像这样调用这个函数:

that.getCommentObject(
currentEntry.gd$comments.gd$feedLink.href + "?alt=json",
function (commentsList) {
currentObject['comments'] = commentsList;
});

替换

currentObject['comments'] = that.getCommentObject(currentEntry.gd$comments.gd$feedLink.href + "?alt=json");

关于javascript - $.getJSON 只返回部分和一个空数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3762709/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com