Aquí está mi código:
var name; function getFBName(username) { $.getJSON('http://graph.facebook.com/' + username, function (d) { name = d.name; }); } getFBName("zuck"); console.log(name);
Estoy luchando desde horas pero no puedo obtener la función getFBName
para devolver el nombre del usuario.
Este es el JSON por cierto:
{ "id": "4", "first_name": "Mark", "gender": "male", "last_name": "Zuckerberg", "link": "https://www.facebook.com/zuck", "locale": "en_US", "name": "Mark Zuckerberg", "username": "zuck" }
Como dijo @ jwatts1980, esta es una cuestión de orden de ejecución. $.getJSON
regresará inmediatamente, antes de que la respuesta haya llegado al cliente, por lo que cuando ejecute console.log
, seguirá esperando. Una posible solución es:
function getFBName(username) { $.getJSON('http://graph.facebook.com/' + username, function (d) { console.log(d.name); }); } getFBName("zuck");
Que registrará Mark Zuckerberg
correctamente. Si tiene varias formas de manejar la salida, también puede ser interesante configurar una función de callback
:
function getFBName(username, callback) { $.getJSON('http://graph.facebook.com/' + username, function (d) { callback(d.name); }); } function handleName(name) { // Do a lot of things here console.log(name); } getFBName("zuck", handleName);