2011-10-24 33 views
0

我對jQuery/javascript很陌生,並努力使'userData'對象公開。 Facebook電話正常工作。在Facebook調用中,控制檯會按照我想要的方式記錄'userData'對象。但是,我不知道如何公開提供對象,所以我可以重新使用它。此時控制檯日誌報告'userData'未定義。有人知道我在做什麼錯嗎?提前致謝! 羅恩使Facebook API調用對象public-object undefined目前

FB.api('/me?fields=id,first_name,last_name,picture', function(userProfile) { 
    var userData = { 
    first_name : userProfile.first_name, 
    last_name : userProfile.last_name, 
    userid  : userProfile.id, 
    picture  : userProfile.picture 
};    

return userData; 
}); 
console.log(userData); 

回答

1

這是在你的用戶數據的前var關鍵字的作用域它的回調函數內。將其設置爲全局變量,並且可以在全局範圍內使用它。不是我實際上建議如何構建您的系統,但它對調試很有用。

var globalUserData; 

FB.api('/me?fields=id,first_name,last_name,picture', function(userProfile) { 
    globalUserData = { 
     first_name : userProfile.first_name, 
     last_name : userProfile.last_name, 
     userid  : userProfile.id, 
     picture  : userProfile.picture 
    }; 

    console.log(globalUserData); 
    // do more stuff with the user data here. 
}); 

還要注意的是console.log運行後立即啓動 FB API調用,它完成並觸發回調之前,這將是漫長的。

+0

感謝您的反饋意見。但是,我仍然沒有得到它的工作。我看到你指向console.log。但是,當我替換爲這樣的東西: $(「#showme」)。prepend(globalUserData.first_name); ...我仍然沒有看到任何東西。怎麼來的?? – franksprings

+0

我更新了我的答案。嘗試一下。 – Leopd