我在使用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());
});
答案 0 :(得分:1)
$.get()
或$.ajax()
等$.json()
方法是异步方法,这意味着您在代码执行后收到数据return 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);
});
});
小提琴: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
});