2011-10-12 45 views
3

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

我简单地使用了facebook生成的code,并且我包含了图元标记。当用户按下它加载一个新的YouTube视频的按钮,我使用jQuery这种方式更新的元标记

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

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

nUrl是新页面的URL包含新的随机选择视频。

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

回答

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中添加一个参数,以便你的ajax在找到参数时知道要显示的内容。 就是这样。

+0

这不是我正在寻找的东西,但是最后点击了关于使用'FB.XFBML.parse'的部分。在范围内重写html是非常巧妙的,以获得新的喜欢按钮。 – CaptainBli

1

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

当您在Facebook上共享/分享URL时,Facebook将向该URL发出HTTP请求并解析它所看到的元标记。

+0

是的,但类似的按钮应指向良好的网页网址,如果它只是指向你--fake.com我不知道用户喜欢设置正确的元标记是什么视频 – john

+0

是的,这就是为什么我说服务器 - 侧脚本。我使用GET变量来确定元标记设置的服务器端逻辑。 – Teddy

1

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

你需要创建一个URL为您网站上的每一个对象 - 是这样的:

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

当你的视频页面使用Ajax的变化,您呈现一个新的类似按钮,指向在URL喜欢这个。在没有JS的情况下击中这个URL应该会呈现正确的OG标签 - 这就是Facebook如何看你的页面。然后,您可以添加JavaScript重定向(window.top.location = NEW URL),将用户重定向到基于AJAX的视频播放器。