سؤال

أواجه بعض المشاكل مع Facebook مثل 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>

أنا ثم أستمع إلى الحدث وأدعو وظيفة JavaScript ، أن 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

هل كانت مفيدة؟

المحلول

ربما تحتاج إلى انتظار أن تكون مكتبة 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 وإضافة مستمع الحدث هذا.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top