2010-11-25 4 views
0

나는 api 같은 페이스 북에 약간의 문제가있다. 나는 다음과 같은 코드 등 버튼을 만드는 오전 : 다음 아약스는 추적하기 위해 로컬 데이터베이스에 등을 삽입 PHP의 조각을 실행하는 것으로, 이벤트를 수신하고 자바 스크립트 함수를 호출하고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> 

이 아티스트에 대한 모든 좋아요. 이 코드를 사용하여 :

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

당신은 아마 완전히 준비가 될 때까지 페이스 북 라이브러리 대기하고 응답을 확인해야합니다.

<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가 페이스 북 라이브러리가로드되기 전에 초기화 정의와 위치에 관계없이 해당 이벤트를 추가하는 것이 확인해야합니다 : 라이브러리가 비동기 적으로로드 된 후에는 페이스 북에 의해 호출되는 fbAsyncInit 방법으로이 작업을 수행 할 수 있습니다 경청자.

+0

감사합니다. 나는 이것을 시도 할 것이다. – Chregan