Frage

Ich habe einige Probleme mit dem Facebook wie api. Ich bin auf der Schaltfläche mit dem folgenden Code zu erstellen:

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

Ich bin dann auf das Ereignis wartet und eine Javascript-Funktion aufrufen, läuft das Ajax ein Stück PHP, dass Einsätze dergleichen in die lokale Datenbank für diesen Künstler den Überblick über alle Vorlieben zu halten. mit diesem 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]);
    });

Das Problem ist, dass es tut immer diese Funktion likeSong nennen und fügen dergleichen in die Datenbank.

Hat jemand vor ein ähnliches Problem gehabt? oder kennen Sie einen besseren Weg, dies zu tun?

Vielen Dank

kümmern, Chregan

War es hilfreich?

Lösung

Sie müssen wahrscheinlich für die Facebook-Bibliothek warten, vollständig bereit sein, und die Antwort überprüfen. Sie können dies mit der fbAsyncInit Methode, die von Facebook aufgerufen wird, sobald die Bibliothek asynchron geladen ist:

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

Sie sollten auch sicherstellen, dass überall dort, wo likeSong definiert wird, bevor die Facebook-Bibliothek lädt initialisiert wird und Sie diesen Ereignis-Listener hinzuzufügen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top