2012-04-05 20 views
1

Это, кажется, в моей голове, как она должна работать, но я не могу понять, почему он не делает:Javascript - функция обратного вызова

(function ($) { 

$.fn.extend({ 

    facebook: function (opts, callbackFnk) { 

     var $this = this; 
     ... 
     ... 
     ... 

     $this.fbGetFriends = function(clback){ 
      jsonUrl = fbMe + '/friends?access_token=' + token + '&callback=?'; 
      $.getJSON(jsonUrl, function(json){ 
       console.log(json.data[0].name); 
       clback.call(json); 
      }); 
     } 
     ... 
     ... 
     ... 

В консоли входа первое имя появляется

В моем другом сценарии :

var facebook = $.fn.facebook(
    { 
     myClientId : '###############', 
     mySecret : '##############' 
    } 
); 

facebook.fbOnLogin = function(){ 
    user = facebook.userDetails(); 
    token = facebook.getToken(); 
    facebook.fbGetFriends(function(json){ 
     for (var i in json) { 
      console.log('friends: ' + i + ' ' + json[i]); 
     } 
    }); 
} 

В консольном журнале им ничего не отображается, а в предыдущих тестах его отображение данных об ошибках неопределенно.

Может ли кто-нибудь сказать мне, где я ошибаюсь?

С уважением

+0

@ Kolink ответил на вопрос, но есть ли причина, по которой вы добавляете эту библиотеку Facebook в 'jQuery.fn'? Это должно быть намного менее сложным, если вы сделаете его отдельным ... – Matt

+0

Это цельный плагин для Android и phonegap, который действительно работает. Я уже пробовал это, но попробую еще раз. –

ответ

3

Вам не нужно clback.call, просто clback(json) достаточно.

+0

Я пробовал это, но теперь работает! yey cheers –

Смежные вопросы