如何从Facebook“喜欢”按钮JS代码调用php页面?

时间:2011-12-22 19:25:43

标签: php javascript facebook facebook-javascript-sdk

我查看了一些答案,似乎无法得到任何工作。现在我想知道这是因为我正在处理的网站目前只能通过XAMPP在本地看到。

以下是我尝试过的几个代码片段:

<script> 
  FB.Event.subscribe('edge.create', location.href = 'test.php');
</script>

FB.Event.subscribe('edge.create', function(response) {
    var xmlhttp = new XMLHttpRequest();
    xmlhttp.open("POST", "test.php", true);
    xmlhttp.send(); 
});

Facebook代码似乎运行但我的php页面从未被调用过。即使是一个简单的警报('你喜欢URL:');不起作用。我可以“喜欢”这个页面,它会在我的FB墙上显示出来。

这就是我在身体标签之后(FB的复制粘贴):

<div id="fb-root"></div>
<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/all.js#xfbml=1";
  fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));</script>

我在某个地方看到一篇帖子声称,如果喜欢的网址与点击该按钮的网址不匹配,则无效。好吧,当真正的URL是.com时,我点击“www.site-name.local”。它似乎可以工作到我的FB墙上显示的喜欢的URL,但偶数不会触发。

我刚检查了Firebug控制台,我得到了:

FB is not defined
    FB.Event.subscribe('edge.create', 

我很欣赏正确的方向。

2 个答案:

答案 0 :(得分:1)

确保在FB.Event.subscribe可以触发之前调用FB.init。

答案 1 :(得分:1)

好的,这是解决方案。它可能不是解决方案,但它对我有用。

FB Dev网站上发布的代码和说明:

http://developers.facebook.com/docs/guides/web/

<html>
  <head>
    <title>My Great Web page</title>
    </head>
    <body>
      <div id="fb-root"></div>
    <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/all.js#xfbml=1";
       fjs.parentNode.insertBefore(js, fjs);
      }(document, 'script', 'facebook-jssdk'));
    </script>
    <div class="fb-like"></div>
    </body>
 </html>

以后能够和#34;喜欢&#34;工作得很好。一个页面并在FB上显示该内容,但单击该按钮后它不会触发任何操作。

我决定去获取该网站的应用ID。这使一切顺利。

新代码如下所示:

<script>
window.fbAsyncInit = function() {
  FB.init({
    appId      : 'my_app_ID_number', // App ID
    status     : true, 
    cookie     : true,
    xfbml      : true,
    oauth      : true,
  });
  // Additional initialization code here

  // Get notified when user likes this
  FB.Event.subscribe('edge.create', function(response){location.href = 'test.php'});            
};

// Load the SDK Asynchronously
(function(d){
   var js, id = 'facebook-jssdk'; if (d.getElementById(id)) {return;}
   js = d.createElement('script'); js.id = id; js.async = true;
   js.src = "//connect.facebook.net/en_US/all.js";
   d.getElementsByTagName('head')[0].appendChild(js);
 }(document));

我不得不放置&#34; FB.Event.subscribe&#34;在此代码块内或它会导致错误。 &#34; FB.Event.subscribe&#34;似乎在&#34; FB.init&#34;之前运行。有机会完成它的工作。如果您有多个&#34;喜欢&#34;不确定您是如何做到这一点的。单页上的按钮。

无论如何,这对我有用。