2011-09-20 106 views
1

我試圖將本地變量UgcItems指定爲uploadedItems,但是當我嘗試返回值時,我得到undefined。如果我把console.log放在.getJSON的內部,那麼我會得到合適的值。問題在於範圍在函數內部。我能做些什麼來讓JSON離開函數?JavaScript:將對象分配給另一個對象

$(function(){ 
    var uploadedItems; 
    $.getJSON("GetExistingUgcItems?workItemId=1", function (UgcItems) { 
     uploadedItems = UgcItems; 
    }); 

    console.log(uploadedItems); 
}); 

謝謝

亞倫

+1

一個不會「將對象分配給對象」。只有*變量和屬性*可以「分配給」;這兩者都不是對象。 – 2011-09-20 00:11:51

回答

0

您遇到的問題是,getJSON默認異步執行。因此,在console.log(uploadedItems)命令完成後,分配給uploadedItems發生。

而不是在根函數中定義uploadedItems,而是定義一個採用uploadedItems的方法。將所有使用uploadedItems的代碼放入此函數中,並從完成的處理程序中調用它

var withUploadedItems = function(uploadedItems) { 
    console.log(uploadedItems); 
    // etc ... 
}; 

$.getJSON("GetExistingUgcItems?workItemId=1", function (UgcItems) { 
    uploadedItems = fromJSON(toJSON(UgcItems)); 
    withUploadedItems(uploadedItems); 
}); 
+0

當它!這讓我在之前的其他語言中陷入困境。感謝您的幫助!! –

相關問題