2012-12-11 12 views
6

Conosco il problema con ajax e restituisce variabili, stavo leggendo in StackOverflow su questo, so che devo usare una funzione di callback, ma nel mio caso non ha funzionato, ovviamente una cosa che sto facendo di sbagliatoottiene variabile valore all'esterno fb.api con callback

il mio codice è questo:

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; 
      } 
    );    
}; 

risposta

7

non riuscite solo restituire il valore perché's asincrona. Prova questo:

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

sì veramente ho provato questo, grazie mille. Ho scritto questo perché stavo pensando che questo è molto "spaghetti" no ?, se scrivo alcune funzioni come questa ... ma ok, guarda che è l'unico modo ..... – francis

+0

beh, questa è la soluzione migliore. ma ovviamente dipende dal tuo intero progetto, ovviamente sembrerà un po 'diverso in uno più grande. non dimenticare di accettare la mia risposta se ti ha aiutato :) – luschn

+0

sì, molto, ma ho bisogno di 15 reputazione !, ma io farò – francis

-1

perfetta, questo è l'esempio che funzionano bene:

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) 

}) 

}

Problemi correlati