通过 ajax 嵌入 Facebook 视频

Posted

技术标签:

【中文标题】通过 ajax 嵌入 Facebook 视频【英文标题】:Embed Facebook video via ajax 【发布时间】:2015-04-01 17:41:49 【问题描述】:

我有一个数据库,其中存储了来自 Facebook、Youtube 和 vimeo 的 X 视频的 ID,然后我通过 Ajax 加载任何视频,vimeo 和 Youtube 完美加载但 Facebook 不加载,它只加载 html 但我通过 ajax 获得的代码还包含 Facebook 要求的脚本... 要从 Facebook 嵌入视频,代码如下:

<script>
    (function(d, s, id)
      var js, fjs = d.getElementsByTagName(s)[0];
        if (d.getElementById(id)) return;
        js = d.createElement(s);
        js.id = id;
        js.src = "//connect.facebook.net/en_US/sdk.js#xfbml=1&version=v2.0";
        fjs.parentNode.insertBefore(js, fjs);
    (document, 'script', 'facebook-jssdk')
        );
</script>
<div class="hidden-xs hidden-sm visible-md visible-lg">
    <div id="fbid">
        <div id="fb-root"></div>
        <div class="fb-post" data-href="https://www.facebook.com/video.php?v=<?php echo $v->v; ?>" data->
            <div class="fb-xfbml-parse-ignore">
            </div>
        </div>
    </div>
</div>

使用此代码我可以嵌入 facebook 视频,如果我直接转到我的 ajax 文件,http://foo.com/ajax.php?i=1 它只会为 facebook 输出该代码,这就是我得到的,它可以正确显示视频,但如果我调用它使用 ajax 我只看到 html,但脚本没有执行,换句话说,我没有看到视频... 我的ajax是这个

$('.v_list li').click(function()
    var $ids = $(this).attr('id');
    $.ajax(
        url: "v.php",
        data: 
            vid: $ids
        ,
        type: "GET",
        // dataType: "html", // test #7 .. working for all
        context: document.body, // change #8
        success: function (data) 
            $("#slider").html(data);
        ,
        error: function (xhr, status) 
            alert("Ocurrio un problema!");
        ,
        complete: function (xhr, data) 
            // hide the loading img
        
    ).done (function (data) 
        // alert('sss'); // This is working...
        $("#slider").find("script").each(function(i) 
            eval($(this).text());
        ); // this p*** of s*** is not working... 
    );
)

所以我遇到的唯一问题是视频是针对 Facebook 的...我该如何解决这个问题?...谢谢

【问题讨论】:

@luschn 有正确的答案。为什么不认为这是正确的!? @denns,可能是因为我忘记了这个问题,所以我为那个项目使用了不同的方法,但是是的,luschn 是正确的,所以我只是标记为正确答案。 【参考方案1】:

使用 AJAX 加载 HTML 代码后,您可能需要使用 FB.XFBML.parse:

FB.XFBML.parse();

来源:https://developers.facebook.com/docs/reference/javascript/FB.XFBML.parse

【讨论】:

以上是关于通过 ajax 嵌入 Facebook 视频的主要内容,如果未能解决你的问题,请参考以下文章

从 Facebook 的 Graph API 嵌入视频的最佳方式是啥?

开始/停止嵌入的 facebook 视频

使用 Facebook Graph API 发布嵌入式视频链接

Lightbox facebook iframe,视频嵌入

在 Facebook 墙上自动嵌入视频

将 Youtube 视频嵌入 Facebook 并以特定时间码播放