1

大家好,我在从 JSON 对象访问值时遇到问题。

首先,我json_encode($something)在“某事”是查询数据库的结果的地方做。(正好 3 行)。然后在.js中我做了以下:var data = ?php echo $something; ?>;

我在萤火虫中测试过,数据是(我将显示 1 行):

[Object {x="something1", y="something2", z="10", w="20"}, ...] so i get Array of objects.

现在我需要访问这些值,但我不知道它们的名称和数量,所以我不能使用类似console.log(data[0].x)工作正常且输出为“something1”的东西;

当我尝试更通用的方法来执行此操作时:

for(var i=0; i<data.length; i++) {
    for(var prop in data[i]) {
        if(data[i].hasOwnProperty(prop))
        console.log(data[i].prop);                  
    }
}

我得到每个值的“未定义”。如何解决这个问题。谢谢。

4

2 回答 2

1

我认为这里的问题是因为这条线

console.log(data[i] .prop );

由于点符号,它期望对象具有道具键而不是value of prop

试试这个(改用括号表示法)

console.log(data[i][prop]);
// This make sure that it will first fetch the value 
//of propertyName and then search for the key on it

方括号表示法允许访问包含特殊字符的属性和使用变量选择属性

检查小提琴

于 2013-05-19T22:20:48.840 回答
0

您可以使用以下方法简化循环:

<html>
<script>
var a = "[ {'x':'something1', 'y':'something2', 'z':'10', 'w':'20'}, {'a':'somethingA',         'b':'somethingB', 'c':'1', 'd':'2'}]";
var data = eval('(' + a + ')');
for(var i in data) {
for(var prop in data[i]) {
        console.log(data[i][prop]);                  
    }
}
</script>
</html>
于 2013-05-19T23:12:32.533 回答