2013-10-27 165 views
0

我想將一個PDO對象轉換爲一個javascript數組,並且有訪問數組中鍵的問題。將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); 
    } 

我在undefined中的缺點OLE。

我發現了幾個帖子,似乎表明上面的語法應該工作,任何想法?

+0

你正在將它們編碼爲字符串。你需要再次解析它們。 whats'console.log(typeof groups [i]);' – naveen

回答

-1

您確定groups數組中的元素不是字符串(未解析的json)嗎?如果是這種情況,可以對字符串使用JSON.parse,並嘗試訪問該名稱。或者,您可以在服務器上生成時刪除引號。

+0

謝謝,我仍然對JSON有所瞭解,這確實有用。我添加了var parsedGroup = JSON.parse(groups [i]);然後通過console.log(parsedGroup.name)調用密鑰; – RyanY

+0

你建議__may__工作,但如果字符串中有「'」,我認爲它會再次打破。 json_encode()返回一個字符串,其中__is__是Javascript對象的Javascript代碼。要使用它,你不需要像RyanY那樣用引號括起來,而只是使用它。看到我的答案。 – Forbesmyester

1

這行:爲json_encode確保它們已經是一個Javascript對象

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

應改爲

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