我缺乏这些语言的一些基础知识,所以这可能是一个简单的问题。
我从ajax调用接收到json编码的对象数组。在开始时,我添加了一些我需要的元素:
array_unshift($data, array('nbr' => 6,'Col1' => 'Company name',
'Col2' => 'Email','Col3' => 'Adress','Col4' => 'City',
'Col5' => 'Code','Col6' => 'Country));
在ajax的success:function(msg)
中,我想迭代这些元素,使它们成为表格的标题:
var qtt=msg[0].nbr;
$foo='<table>';
for (var i = 1; i<qtt; i++) {
$foo=$foo+'<th>'+msg[i].Col+i+'</th>';
}
$foo=$foo+'</table>;
我想访问msg的第i个元素,我知道它被命名为Col&#39; + i。对我来说,它同时看起来既简单又困难。
我只是不知道该怎么做,不知道。欢迎任何帮助。
修改: 使用firebug,我可以回复ajax调用的答案。如果它可以在这里帮助你(元素是法语,但它正是我之前谈论的):
[{"nbr":6,"Col1":"Nom soci\u00e9t\u00e9","Col2":"Email","Col3":"Adresse",
"Col4":"Ville","Col5":"Code postal","Col6":"Pays"},
{"Soc_Nom":"foo1","Soc_Email":"bar1","Soc_Adresse":"foobar1", "Vil_Nom":
"Foofoo1","Vil_Code_Postal":"1000","Pys_Nom":"Belgique"},{"Soc_Nom":
"Foo2","Soc_Email":"Bar2","Soc_Adresse":"foobar2","Vil_Nom":"Foofoo2",
"Vil_Code_Postal":"2000","Pys_Nom":"Belgique"}]
Ansewer: 因为我想访问的所有信息都在msg [0]中,所以无需遍历msg []。
使用msg [0] [&#39; Col&#39; + i]完美无缺。
答案 0 :(得分:1)
如果您尝试动态访问属性名称,可以使用属性名称为字符串的索引器:
$foo=$foo+'<th>'+msg[i].Col+i+'</th>';
成为
$foo=$foo+'<th>'+msg[i]['Col' + i]+'</th>';
msg[i].Col + i
(您的原始代码)正在寻找名为Col
的属性,并尝试将Col
的值添加到i
的值。
第二个示例是构建动态属性名称'Col' + i
,并使用括号访问msg[i]
对象上该名称的属性。
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Property_Accessors