2010-12-23 13 views
0

我有一個xml響應的facebook用戶id號碼列表,我想要做的就是編寫html,將他們的圖片放在他們的名字旁邊。不幸的是我有一個奇怪的問題:收到來自Facebook的名字的麻煩

var friendList = ""; 
$(xml).find("id").each(function() 
{ 
    var tId = $(this).text(); 
    var tUrl = "/" + tId; 
    var perName = ""; 
    FB.api(tUrl, function(response) { 
     perName += response.name; 
    }); 
    alert(perName); 
    friendList += "<div class=\"picSpacer\"><img src=\"https://graph.facebook.com/"+tId+"/picture/?type=large\" class=\"friendDIV\" /><div class=\"nameBox\">"+perName+"</div></div>"; 
}); 

有了這段代碼的作品,但如果我刪除警報它不起作用。警報彈出未定義。就好像字符串perName在實際包含用戶名之前必須被訪問一次。我不明白這是怎麼回事。

回答

2

這很簡單。當它的完成

function(response) { 
    //do entire DOM manipulation here 
} 

被調用 FB.api()執行一個異步請求。 現在alert()會延遲執行足夠長的時間,以便該回調獲取calland並定義perName。

只需將您的DOM操作代碼移到回調中,以確保您確實有迴應。

+0

將DOM操作線向上移動到回調結果中根本沒有任何顯示。 – 2010-12-23 06:46:29