2011-12-22 6 views
0

私はいくつかの答えを見て、私は何か動作するように見えることはできません。今私は、私が作業しているサイトが現在XAMPPを介してローカルにしか見えないので、これが問題なのかどうか疑問に思っています。ここでJSコードの "好きな" FacebookからPHPページを呼び出す方法は?

は、私が試したもののコードスニペットのカップルです:

<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壁にそのように表示されます。

これは私が右のbodyタグ(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が気に入っれている場合はURLと一致しなかったと主張してポストを見ましたこれをクリックしても動作しませんでした。実際のURLが.comの場合は、「www.site-name.local」からクリックしています。私のFB壁にURLが表示されていても、それは起動しません。

私はFirebugのコンソールをチェックし、私が取得:

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

私は正しい方向に突き出すをいただければと思います。

+0

あなたは試しました。そして?結果は? – zerkms

+0

あなたの質問に答えるために編集された元の投稿 –

+0

あなたのコードが実行されなかった場合、Facebookコードが「実行されているように見える」とあなたはどのように判断していますか? –

答えて

1

OK、これが解決策です。それは解決策ではないかもしれませんが、それは私のために働いていました。

ここで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> 

はへページ「のような」ことができることと上のショーアップを持つに限り、後にうまく働きましたFBが表示されますが、ボタンをクリックするとアクションは発生しませんでした。

サイトのApp 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)); 

私はこのコードブロック内「FB.Event.subscribe」を配置しなければならなかったか、エラーが発生します。 「FB.Event.subscribe」は、「FB.init」がその仕事をする機会を得る前に実行されたように見えました。 1つのページに複数の「好きな」ボタンがある場合は、これをどうやって行うかについては不明です。

とにかく、これは私のために働いた。

+0

は2014年1月31日に動作します –

1

FB.Event.subscribeが起動する前にFB.initが呼び出されていることを確認してください。

+0

いいえ、修正しませんでした。 –

+0

固定しているようです。上記の答えから、実際にはFB.init()呼び出しの直後にFB.Event.subscribeを移動しました。 – DMCS

+0

私が言ったのは、FB.Event.Subscribeを動かすだけで問題が解決されなかったということです。それだけでは解決策ではありませんでした。 –

関連する問題