使用Ajax更新facebook按钮

时间:2011-10-12 18:51:00

标签: jquery facebook facebook-like meta-tags opengraph

我刚刚完成了一个基于ajax的小网站100%。但是我在更新facebook Like按钮的链接时遇到了问题。

我只使用了facebook生成的code,并且我包含了图元标记。当用户按下按钮时,它会加载新的YouTube视频,我会更新元标记

<meta property="og:url" content="http://www.mySite.com/"/>

以这种方式使用jQuery:

$("meta[property=og:url]").attr("content", nUrl);

nUrl是新页面网址,其中包含新随机选择的视频。

当我点击“赞”时,它只是抓住“喜欢”它只是抓住原始的og:url元标记内容,现在是由ajax设置的新内容。 如何用javascript更新像按钮网址?我做了什么错了? 谢谢

3 个答案:

答案 0 :(得分:2)

所以这就是我为其他拥有相同问题的人解决问题的方法:  将其添加到您的网站:

<html xmlns="http://www.w3.org/1999/xhtml"
  xmlns:og="http://ogp.me/ns#"
  xmlns:fb="http://www.facebook.com/2008/fbml" >

这会将fbml添加到您的站点。然后使用类似按钮(或评论系统,或其他)的FBML版本,因为我使用了这个:

<span id="fbLike"><fb:like href="http://www.your-site.com?v=1" send="false" layout="button_count" width="80" show_faces="true"></fb:like></span>

现在每次用户进行Ajax操作时都要有一个新的facebook按钮,只需将此jquery代码添加到客户端代码中处理此操作的位置:

var nUrl = "http://www.your-site.com?v="+toPlayId.substring(1);
$( '#fbLike' ).html('<fb:like href="'+nUrl+'" send="false" layout="button_count" width="80" show_faces="true" />');
        if (typeof FB  != "undefined"){
        FB.XFBML.parse(document.getElementById('fbLike'));} 

您基本上只需用新按钮替换按钮所在的位置即可。 nUrl是您希望新按钮指向的新链接。 你不需要一个真正的新URL只需在url中添加一个参数,这样你的ajax就会知道在找到参数时要显示的内容。 就是这样。

答案 1 :(得分:1)

不要使用AJAX或javascript修改元标记。设置服务器端脚本以便第一次正确设置它们。

当您喜欢/在Facebook上分享网址时,Facebook会向网址发出HTTP请求并解析其看到的元标记。

答案 2 :(得分:1)

您无法使用Javascript更新OG代码。 Facebook将向您的服务器发出服务器请求,并且必须返回代表该对象的OG标记。

您需要为网站上的每个对象创建一个网址,例如:

http://www.yoursite.com/video/VIDEO_ID

当您的视频页内更改使用Ajax时,您将呈现一个新的类似按钮,该按钮指向这样的URL。在没有JS的情况下访问此URL应该呈现正确的OG标记 - 这就是Facebook将如何看到您的页面。然后,您可以添加javascript重定向(window.top.location = NEW URL)以将用户重定向到基于Ajax的视频播放器。