【问题标题】:How do I get data from the YouTube api on a page loaded by ajax?如何从 ajax 加载的页面上的 YouTube api 获取数据?
【发布时间】:2013-05-09 12:37:54
【问题描述】:

我正在使用以下代码简单地获取特定 YouTube 视频的观看次数,并将其放在 ID 为 ytviews 的 div 中:

var video_id='gRcGLk6izZ0';
$.getJSON('http://gdata.youtube.com/feeds/api/videos/'+video_id+'?v=2&alt=jsonc',function(data){
document.getElementById('ytviews').innerHTML = (data.data.viewCount);
});

Example

这是我的问题:

我放置视图计数的 div 位于通过 AJAX 加载的页面上。因此,当我在加载 AJAX 时访问该页面时,不会显示查看次数。

这是 AJAX 代码:

$(function () {
    var b = "",
        a = $("#main-content");
    $("#page-wrap");
    $(document).delegate(".dyn a", "click", function () {
        window.location.hash = $(this).attr("href");
        return !1
    });
    $(window).bind("hashchange", function () {
        String.prototype.toTitleCase = function (b) {
            var a = this;
            1 !== b && (a = a.toLowerCase());
            return a.replace(/\b[a-z]/g, function (a) {
                return a.toUpperCase()
            })
        };
        b = window.location.hash.substring(1);
        document.title = window.location.hash.replace("#", "").replace(/[_]/g, " ").replace(".html", "").replace("and", "+").toTitleCase();
        b && a.find("#guts").fadeOut(200, function () {
            a.hide().load(b + " #guts", function () {
                a.fadeIn(200);
                $(".dyn a").removeClass("current");
                $(".dyn a[href=" + b + "]").addClass("current")
            })
        })
    });
    $(window).trigger("hashchange")
});

我在 Facebook 点赞问题上遇到了同样的问题,我使用以下代码解决了这个问题,以便在将 AJAX 内容插入 DOM 后重新解析 FBML:

$(document).ajaxComplete(function(){
    try{
        FB.XFBML.parse(); 
    }catch(ex){}
});

我尝试将我的查看计数代码放入这个 ajaxComplete 解决方案中,除了它使 Facebook 链接变得疯狂并在页面中闪烁之外,这有点工作。

谁能帮助我了解如何在加载 AJAX 内容后成功加载两者。

提前致谢!

【问题讨论】:

  • 你能显示加载页面的 AJAX 代码吗?您应该可以将上面的$.getJSON 放入该代码的成功回调中。
  • @mccannf 我已经用 AJAX 代码更新了我的问题。你能告诉我成功回调在哪里吗?

标签: jquery ajax facebook youtube-api


【解决方案1】:

load 回调中,您可以添加您的$.getJSON:

    ...
    b && a.find("#guts").fadeOut(200, function () {
        a.hide().load(b + " #guts", function () {
            a.fadeIn(200);
            $(".dyn a").removeClass("current");
            $(".dyn a[href=" + b + "]").addClass("current");
            $.getJSON('http://gdata.youtube.com/feeds/api/videos/'+video_id+'?v=2&alt=jsonc',function(data) {
                  $('#ytviews').html(data.data.viewCount);
            });
        })
    })
    ...

【讨论】:

  • 是的!这样可行。现在我明白了,这完全有道理。谢谢@mccannf
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-04-27
  • 2021-01-24
  • 2013-08-10
  • 1970-01-01
  • 1970-01-01
  • 2020-11-12
  • 2016-06-11
相关资源
最近更新 更多