2010-11-25 5 views
0

私はapiのようなfacebookでいくつかの問題を抱えています。私はその後を追跡するために、AJAXは、ローカルデータベースになどを挿入するPHPの一部を実行することを、イベントを受け取るとJavaScript関数を呼び出していますFacebookのようなAPI

<fb:like href="http://www.nettunes.co.za/artist_profile.php?ref=fb&amp;amp;artist_id=<?PHP echo $row->artist_id;?>&amp;amp;show=albums&amp;amp;sub_section=song&amp;amp;id=<?PHP echo $row->song_id;?>" layout="box_count" show_faces="false" width="50" font="arial" title="<?PHP echo ucfirst($row->song_name);?> by <?PHP echo $row->artist_name;?> on www.nettunes.co.za"></fb:like> 

:私は、次のコードでのようなボタンを作成していますこのアーティストのすべてのお気に入り

var e = document.createElement('script'); 
e.type = 'text/javascript'; 
e.src = document.location.protocol + 
    '//connect.facebook.net/en_US/all.js'; 
e.async = true; 
document.getElementById('fb-root').appendChild(e); 
    FB.Event.subscribe('edge.create', function(response) { 
     var song_id = response.toString().split("&amp;id="); 
     likeSong(song_id[1]); 
    }); 

問題は、このlikeSong関数を呼び出してデータベースに追加することではありません。

誰も以前に同様の問題があったのですか?あなたはこれを行うより良い方法を知っていますか?

おかげでそんなに

は、 Chregan

答えて

2

を世話をするあなたは、おそらく完全に準備ができて、応答を確認するためにFacebookのライブラリを待つ必要があります。あなたはまた、likeSongが定義されている場所は、Facebookのライブラリがロードされる前に初期化されていることを確認する必要があり、あなたがそのイベントを追加

<div id="fb-root"></div> 
<script type="text/javascript" charset="utf-8"> 
window.fbAsyncInit = function() { 
    FB.init({appId:"1234567890", status:true, cookie:true, xfbml:true, session:null}); 
    FB.Event.subscribe('edge.create', function(response) { 
     if (response) 
     { 
      var song_id = response.toString().split("&amp;id="); 
      likeSong(song_id[1]); 
     } 
    }); 
} 

(function() { 
var e = document.createElement("script"); 
e.src = document.location.protocol + "//connect.facebook.net/en_US/all.js"; 
e.async = true; 
document.getElementById("fb-root").appendChild(e); 
}()); 
</script> 

:あなたはライブラリが非同期的にロードされた後のFacebookによって呼び出されfbAsyncInit方法でこれを行うことができますリスナー。

+0

ありがとうございます!私はこれを試してみます。 – Chregan

関連する問題