【问题标题】:Working with Youtube Google API & jQuery使用 Youtube Google API 和 jQuery
【发布时间】:2011-05-04 04:40:10
【问题描述】:

我正在遍历由 db 生成的每个 li,它会生成一个指向我想要链接到的视频的 youtube 链接所以基本上我有这个:

<ul id="mediaList">
    <li>
        <p>http://www.youtube.com/watch?v=TOm-myVLmKU</p>
    </li>
    <li>
        <p>http://www.youtube.com/watch?v=odNde8wQ5uA</p>
    </li>
</ul>

我需要遍历每个 li 项目,获取 youtube 链接,获取视频 ID,然后检索 JSON 数据,最终目标是将该视频的缩略图的图像标签添加到列表项中用于媒体列表

为了做到这一点,我有这个 jquery 代码(请注意不要使用冲突,所以 $ 变成 $j):

$j(document).ready(function () {

$j("#mediaList li").each(function (){

    var u = $j(this).find("p").text();
    var reqStart = "http://gdata.youtube.com/feeds/api/videos/";
    var reqSettings = "?v=2&alt=json-in-script&callback=?";
    var vid = grabytvid(u);

    var request = reqStart + vid + reqSettings;

    $j.getJSON(request, function(data) {
        var y = (data.entry["media$group"]["media$thumbnail"][0].url);

    });

    $j(this).append('<img src="' + y + '" alt="" />');

    });
});

我在哪里使用 Youtube API Feed 调用:

http://gdata.youtube.com/feeds/api/videos/[Video_ID_Here]?v=2

供您参考,grabytvid 是一个仅拆分和抓取视频 id 的函数:

function grabytvid(ystring)
{
    var v = ystring.split("=").pop();
    return v;
}

有什么想法我在这里出错了吗?

【问题讨论】:

    标签: jquery json youtube-api


    【解决方案1】:

    这很简单。 y 未在 $j(this).append('&lt;img src="' + y + '" alt="" /&gt;'); 中定义,因为您仅在 getJSON 函数内设置了 y

    我会这样做

    $("#mediaList li").each(function() {
    
        var self = this, u = $(this).find("p").text();
        var reqStart = "http://gdata.youtube.com/feeds/api/videos/";
        var reqSettings = "?v=2&alt=json-in-script&callback=?";
        var vid = grabytvid(u);
    
        var request = reqStart + vid + reqSettings;
    
        $.getJSON(request, function(data) {
            var y = (data.entry["media$group"]["media$thumbnail"][0].url);
            $(self).append('<img src="' + y + '" alt="" />');
        });
    });
    

    【讨论】:

    • 采用了这种技术,它最终成为了与谷歌 api 的连接问题(从来没有成功的 json 请求),但这肯定解决了范围错误,并获取一个本地自变量引用这对我帮助更大从长远来看
    【解决方案2】:

    请注意,调用时 y 不在范围内:

    $j(this).append('&lt;img src="' + y + '" alt="" /&gt;');

    我建议执行以下更改:

    var y;
    
    $.getJSON(request, function(data) {
       y = (data.entry["media$group"]["media$thumbnail"][0].url);
    
    });
    

    希望这有帮助,享受生活。

    【讨论】:

    • 这也有效并修复了范围错误,但这个局部变量是我选择上述答案的原因。
    猜你喜欢
    • 2011-05-10
    • 2012-04-26
    • 2015-09-22
    • 2016-09-07
    • 2014-01-25
    • 2011-05-13
    • 1970-01-01
    • 2017-06-21
    • 2011-01-29
    相关资源
    最近更新 更多