我知道ajax和返回变量的问题,我在stackoverflow中读到这个,我知道我必须使用回调函数,但在我的情况下没有用,当然我做错了< / p>
我的代码是:
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;
}
);
};
答案 0 :(得分:7)
您不能只返回该值,因为它是异步的。试试这个:
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();
答案 1 :(得分:-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)
})
}