我已经使用AJAX从php调用了一些数据,如果我编码alert(data.a)的结果看起来像这样......
({a:[{my_id:"34", name:"Dave"}, {my_id:"39", name:"Barry"}]}
我不知道如何循环使用它来提取值。
我的最新代码......
for (var key in data.a)
{
if (data.a.hasOwnProperty(key))
{
alert(key + " -> " + data.a[key]);
}
}
...显示
0 -> [object Object]
,这也显示相同......
for (var i=0, tot=data.a.length; i < tot; i++)
{
for (var key in data.a[i])
{
if (data.a[i].hasOwnProperty(key))
{
alert(key + " -> " + data.a[i][key]);
}
}
}
循环查看这些结果以提取数据以进行显示的技巧是什么?
如果有帮助,这就是我在php结束时发送的内容......
$x['a'] = $myArray;
echo json_encode($x);
感谢您的时间和帮助。
答案 0 :(得分:2)
你是不是喜欢这样的?循环遍历所有对象,打印出所有属性和值?
for (var i = 0; i < data.a.length; i++) {
var objectInArray = data.a[i];
var keys = Object.keys(objectInArray);
for (var j = 0; j < keys.length; j++) {
var key = keys[j];
alert(key + " -> " + objectInArray[key]);
}
}
答案 1 :(得分:1)
当您在for循环中执行data.a[key]
时,您将获得一个json对象:key = 0时为{my_id:"34", name:"Dave"}
,key = 1时为{my_id:"39", name:"Barry"}
。因此,为了获取值你应该做这样的事情:
for (var key in data.a)
{
if (data.a.hasOwnProperty(key))
{
alert(key + " -> " + data.a[key].my_id);
// data.a[key].name to get name attribute
}
}
答案 2 :(得分:1)
只是
for (var i=0; i < data.a.length; i++) {
alert(data.a[i].my_id + " -> " + data.a[i].name);
}
答案 3 :(得分:1)
在您的示例中,data.a
是一个对象数组,因此可以使用:
for (var i = 0; i < data.a.length; i++) {
console.log('my_id: ' + data.a[i].my_id);
console.log('name: ' + data.a[i].name);
}