我有array
这样,
var serialize={};
现在,我有表单,我正在序列化该表单并将其添加到数组中的serialize
,
var c=12;
ser[c]=$(elem).find('input[name!=material_id],select').serializeArray();
生成这样的数组,
ser[127][0][name] quantity_1_127
ser[127][0][value] 100
ser[127][1][name] single_1_127
ser[127][1][value] 11
ser[127][2][name] double_1_127
ser[127][2][value] 17.5
现在我只想插入新的键和值,我就是这样做的
ser[c]['test']='test';
但这并没有影响。这是什么原因?我在这做错什么吗?任何替代解决方案?
答案 0 :(得分:1)
那是因为ser[c]
是一个数组而你正在尝试将它用作对象。
使用以下内容添加该测试/测试内容:
ser[c].push({'test': 'test'});
或者,当您设置对象中的其他值时:
ser[c].push({ 'name': 'test', 'value': 'test'});
这不是PHP,其中关联数组中的索引可以是字符串或整数。这是javascript,其中,如果对象中的索引是整数,那么该对象是一个数组,如果你的索引是字符串,那么你的对象就是......好吧,对象。
所以,如果你想要像ser[c]['mykey'] = value
这样的东西,你必须做类似的事情:
ser[c] = { 'mykey': 'value'};
但这意味着ser[127][0]
类型的元素将消失。