我有一个数据库,我也存储来自Facebook的X视频的ID,Youtube和vimeo,然后我通过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-width="800">
<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的时候......我该如何解决这个问题?...谢谢
答案 0 :(得分:14)
使用AJAX加载HTML代码后,您可能需要使用FB.XFBML.parse:
FB.XFBML.parse();
来源:https://developers.facebook.com/docs/reference/javascript/FB.XFBML.parse