javascript - 使用 YouTube API 时 undefined variable ?

标签 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());
});

最佳答案

$.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/

相关文章:

javascript - float div 无法居中或右对齐

javascript - 在其内部发出解除绑定(bind) "DOMSubtreeModified"和 setTimeout

api - 使用对外部服务器的 HTTP 调用来检查安全性的安全后果是什么?

php - 处理来自多个第三方 API 的登录

ruby-on-rails - 用 Grape 构建 XML API

javascript - 与 Rails 和 Javascript 共享模板

javascript - 销毁事件不会从 Backbone 模型传播到 Backbone 集合

javascript - 根据条件显示和隐藏子 div

javascript - 在脚本中介器 esb wso2 中获取错误 'Cannot read property "长度“来自未定义”

javascript - 我需要在加载页面和调整页面大小时根据窗口的大小设置div的高度