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"}

ただし、キーの 1 つにアクセスしようとすると、次のようになります。

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

groups 配列の要素が文字列 (解析されていない json) ではないことを確認してください。この場合、文字列に JSON.parse を使用して、名前にアクセスしてみてください。または、サーバー上で生成するときに、オブジェクトを引用符で囲むこともできます。

于 2013-10-27T13:07:48.843 に答える