0

我正在尝试将 PDO 对象转换为 javascript 数组,并且在访问数组中的键时遇到问题。

<script> var groups = new Array(); </script>
<?php $groups = getGroups($_SESSION['userId']);             //turn group o
while ($row = $groups->fetch()){
echo "<script> groups.push('" . json_encode($row) . "'); </script>";
}
?>

如果我像这样控制台阵列:

for(var i = 0; i < groups.length; i++){
    console.log(groups[i]);
    }

我的控制台打印出这个:

{"id":"5","teacherid":"1","name":"Honors","subject":"0","type":"custom","sid":"0","skillid":"0","grade":"8"}

但是,当我尝试像这样访问其中一个键时:

for(var i = 0; i < groups.length; i++){
    console.log(groups[i].name);
    }

我在控制台中未定义。

我发现了几篇似乎表明上述语法应该有效的帖子,有什么想法吗?

4

2 回答 2

1

这一行:

echo "<script> groups.push('" . json_encode($row) . "'); </script>";

应改为

echo "<script> groups.push(" . json_encode($row) . "); </script>";

因为 json_encode 确保它们已经是一个 Javascript 对象。

于 2013-10-27T14:24:31.937 回答
-1

您确定组数组中的元素不是字符串(未解析的 json)吗?如果是这种情况,您可以在字符串上使用 JSON.parse,并尝试访问该名称。或者,在服务器上生成时,您可以在对象周围放置引号。

于 2013-10-27T13:07:48.843 回答