2010-11-25 7 views
0

J'ai des problèmes avec le facebook comme API. Je crée le bouton comme avec le code suivant:Facebook Like 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> 

Je puis écoute pour l'événement et appeler une fonction javascript qui ajax exécute un morceau de PHP qui insère similaire dans la base de données locale de garder une trace de tout aime pour cet artiste. en utilisant ce code:

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]); 
    }); 

Le problème est qu'il ne marche pas toujours appeler cette fonction likeSong et ajouter comme à la base de données.

Quelqu'un a-t-il déjà eu un problème similaire? ou connaissez-vous une meilleure façon de le faire?

merci beaucoup

prendre soin, Chregan

Répondre

2

Vous devez probablement attendre la bibliothèque Facebook pour être tout à fait prêt et de vérifier la réponse. Vous pouvez le faire avec la méthode fbAsyncInit, qui est appelé par Facebook une fois que la bibliothèque a chargé de manière asynchrone:

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

Vous devez également vous assurer que partout où likeSong est défini est initialisé avant le chargement de la bibliothèque Facebook et vous ajoutez cet événement auditeur.

+0

merci! Je veux bien essayer. – Chregan