2012-12-11 9 views
6

Znam problem z ajaxem i zwracam zmienne, czytałem w stackoverflow o tym, wiem, że muszę użyć funkcji wywołania zwrotnego, ale w moim przypadku nie działa, Oczywiście coś robię źlepobierz zmienną wartości poza fb.api z callbackiem

Mój kod to:

var id_user=get_id_user_login();//undefined?????????? 

function get_id_user_login(){ 
    FB.api(            
     '/me',      
      {fields:'id'}, 
      function(response){//callback  
       console.log(response.id);//OK 
       return response.id; 
      } 
    );    
}; 

Odpowiedz

7

can not po prostu zwrócić wartość ponieważ its asynchroniczny. Spróbuj tego:

function customFunction(id) { 
    console.log(id); 
} 

function get_id_user_login(){ 
    FB.api(            
     '/me',      
      {fields:'id'}, 
      function(response){ 
       customFunction(response.id); 
      } 
    );    
}; 

get_id_user_login(); 
+0

tak naprawdę to próbowałem, dzięki. Napisałem to, ponieważ myślałem, że to jest bardzo "spaghetti" nie ?, jeśli piszę niektóre funkcje w ten sposób ... ale ok, spójrz, to jest jedyny sposób ..... – francis

+0

cóż, jest to najlepsze rozwiązanie. ale oczywiście zależy to od twojego całego projektu, oczywiście będzie wyglądał nieco inaczej w większym. nie zapomnij przyjąć mojej odpowiedzi, jeśli ci to pomogło :) – luschn

+0

tak, dużo, ale potrzebuję 15 reputacji !, ale zrobię – francis

-1

Perfect, to jest przykład, który działa prawidłowo:

function mostrarInvitaciones(){ 
FB.login(function(response) 
{ 
    var object = { method: 'apprequests', 
      message: 'Message Txt', 
      filters: ['app_non_users'], 
      max_recipients: '1', 
      redirect_uri: 'here the url app' 
    }; 
    // Function callback for get the values, because the Fb.api is async. 
    function callback(response){ 
      function obtenerDatosLoginUsuario(id, name) { 
       //console.log('Id Usuario desde custom: '+id); 
       //console.log('Nombre usuario desde custom: '+name); 
       document.getElementById('miid').innerHTML = id; 
       document.getElementById('minombre').innerHTML = name; 
      } 
      function obtenerDatosAmigo(id, name) { 
       //console.log('Id Amigo desde custom: '+id); 
       //console.log('Nombre Amigo desde custom: '+name); 
       document.getElementById('idamigo').innerHTML = id; 
       document.getElementById('nombreamigo').innerHTML = name; 
      } 
      // Datos del Login Usuario 
      function datosLoginUsuario(){ 
       FB.api('/me',{fields: 'name'}, function(response) 
       { 
        //console.log(response.name); 
        //console.log(response); 
        obtenerDatosLoginUsuario(response.id,response.name); 
       }); 
      } 
      // Datos del amigo seleccionado 
      function datosAmigoInvitado(){ 
       FB.api('/'+ response.to, function(response) 
       { 
        //console.log(response.id); 
        //console.log(response.name); 
        obtenerDatosAmigo(response.id,response.name); 
       }); 
      } 
      // Call the function 
      datosLoginUsuario(); 
      datosAmigoInvitado(); 

    };  
    // Facebook UI 
    FB.ui(object, callback) 

}) 

}

Powiązane problemy