Question

J'ai des problèmes avec le facebook comme api. Je crée le bouton comme avec le code suivant:

<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, ajax qui exécute un morceau de PHP qui insère similaire dans la base de données locale pour garder une trace de tous les goûts 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 ajoutez similaire à la base de données.

Quelqu'un at-il eu un problème similaire avant? ou Connaissez-vous une meilleure façon de le faire?

Merci beaucoup

prendre soin, Chregan

Était-ce utile?

La solution

Vous avez probablement besoin d'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 devriez également vous assurer que chaque fois likeSong est défini est initialisé avant le chargement de la bibliothèque Facebook et vous ajoutez cet écouteur d'événement.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top