使用YouTube API时未定义变量?

时间:2015-09-11 22:44:22

标签: javascript jquery api youtube

我在使用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());
});

1 个答案:

答案 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
        });