2012-10-11 208 views
0

我有一个内部AJAX调用的对象,我无法将新属性添加到其包含另一个对象的属性。将对象动态添加到另一个对象的属性

这里是我的尝试:

$.post('/home/save.json', {obj:obj}, function(data) { 
    var qu = {}; 
    qu["Id"] = "some value"; 
    qu["Type"] = "some value"; 
    qu["Name"] = "some value" 
    qu["Variants"] = data["Variants"] 
    if (data['Subvariant']) { 
     qu["Variants"]["Subvariant"] = data['Subvariant'] 
    } 
    // ... 
}); 
+0

你确定'data [“Variants”]'实际上是一个对象吗?你的数据的相关部分(JSON)是什么样的?只要data [“Variants”]是一个对象,你就可以工作。 –

回答

1

你错过了一些分号,我会用点号

var qu = {}; 
qu.Id = "some value"; 
qu.Type = "some value"; 
qu.Name = "some value"; 
qu.Variants = data.Variants; 
if (data.Subvariant !== undefined && data.Subvariant !== null) { 
    qu.Variants.Subvariant = data.Subvariant; 
} 

或者,您也许意味着要检查data.Variants.Subvariant而不是data.Subvariant

+0

谢谢,点符号是正确的选择! –

+1

@Alega:点和括号之间没有区别。它们是等价的。这段代码的工作原理没有意义,但你的代码却没有。你也必须改变别的东西。 –