2010-11-25 4 views
0

У меня возникли проблемы с facebook как api. Я создаю кнопку, как с помощью следующего кода: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> 

Я то прослушивает событие и вызов яваскрипта функцию, что Ajax работает кусок PHP, который вставляет как в локальную базу данных, чтобы отслеживать всем нравится этот художник. используя этот код:

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, чтобы быть полностью готова и проверить реакцию. Вы можете сделать это с помощью fbAsyncInit метода, который вызывается 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> 

Вы также должны убедиться в том, что везде, где likeSong определяется инициализируется до библиотеки нагрузок на Facebook и добавить это событие слушатель.

+0

спасибо! я попробую. – Chregan 2010-11-27 07:48:58