2011-09-20 132 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

当它!这让我在之前的其他语言中陷入困境。感谢您的帮助!! –

相关问题