我在使用 YouTube API 的函数时遇到问题。它说其中一个变量未定义,我不确定是什么导致了错误。请帮忙。
http://jsfiddle.net/neowot/p5y4t9co/1/
JS
function QueryGetta0() {
var TTsearchQuery = 'lana del rey';
return TTsearchQuery;
}
function QueryGetta1() {
$.get(
"https://www.googleapis.com/youtube/v3/search",{
part: 'snippet',
maxResults: 1,
q: QueryGetta0(),
type: 'video',
key: 'AIzaSyCvk3NNMQASZgFkCNxIp9jH-l8O0PXhDUo'},
function(data) {
$.each(data.items, function(i, item){
console.log(item);
TTsearchResultID = item.id.videoId;
console.log(TTsearchResultID);
})
}
);
return TTsearchResultID;
}
$('#clicker').on('click', function() {
alert(QueryGetta1());
});
最佳答案
$.get()
方法如 $.ajax()
或 $.json()
是异步方法,这意味着您接收代码执行后的数据返回 TTSearchResultID
这是实现您想要实现的目标的一种方法(我还删除了无用的 $.each
因为您只请求一个项目):
function QueryGetta0() {
var TTsearchQuery = 'lana del rey';
return TTsearchQuery;
}
function QueryGetta1() {
return $.get(
"https://www.googleapis.com/youtube/v3/search",{
part: 'snippet',
maxResults: 1,
q: QueryGetta0(),
type: 'video',
key: 'AIzaSyCvk3NNMQASZgFkCNxIp9jH-l8O0PXhDUo'}
);
}
$('#clicker').on('click', function() {
QueryGetta1()
.done(function(data) { //Inside this function, do everything you want with data
var TsearchResultID = data.items[0].id.videoId;
alert(TsearchResultID);
});
});
fiddle :http://jsfiddle.net/p5y4t9co/6/
说明:
$.get
返回一个 jqXHR 对象。在此对象上,我们可以使用 .done(pCallbackOnSuccess)
或 .fail(pCallbackOnFail)
。
请求成功时会调用.done
方法,回调会接收请求的数据作为参数,如果请求出错,则返回.fail
被调用时,回调将收到错误对象。
同时使用的示例:
$.get(options)
.done(function(data) {
//do what you want with data
})
.fail(function(error) {
//do what you want with the error
});
关于javascript - 使用 YouTube API 时 undefined variable ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32533149/