2012-12-11 93 views
6

我知道ajax和返回變量的問題,我在讀取關於這個的計算器時,我知道我必須使用回調函數,但在我的情況下沒有工作,當然什麼我作出錯誤的獲取帶有回調函數的fb.api外部的值變量

我的代碼是這樣的:

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

回答

7

您不容只返回值,因爲it's異步的。試試這個:

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

是真的我想這一點,非常感謝。我寫這個是因爲我認爲這是非常「意大利麪條」沒有?,如果我寫這樣的功能......但沒關係,看看這是唯一的方法..... – francis

+0

好吧,這是最好的解決方案。但它當然取決於你的整個項目,當然它會在一個更大的項目中看起來有點不同。不要忘了接受我的答案,如果它幫助你:) – luschn

+0

是的,很多,但我需要15聲望!,但我會做 – francis

-1

完美的,這是正常工作的例子:

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) 

}) 

}

相關問題