我一直在尝试将PHP数组传递给JavaScript数组,但是当我读出该JavaScript数组的内容时,它会直接显示[object,object]。
首先我用sql语句在PHP中创建一个数组,然后将其更改为JSON格式并将其放在JavaScript数组中。
<?php
while ($row = mysql_fetch_assoc($result)) {
$array[] = $row;
}
mysql_free_result($result);
?>
<script type='text/javascript'>
var js_array =<?php echo json_encode($array);?>;
for(i=0;i<5;i++){
alert(js_array[i]);
}
</script>
答案 0 :(得分:0)
因为mysql_fetch_assoc返回的每一行都是一个关联数组,它基本上是一个哈希&#34;键/值&#34;这被json和javascript视为一个对象!
使用mysql_fetch_array代替
mysql_fetch_array http://au2.php.net/manual/en/function.mysql-fetch-array.php
mysql_fetch_assoc http://php.net/manual/en/function.mysql-fetch-assoc.php
答案 1 :(得分:0)
$ row作为mysql_query_result已经是一个数组,所以你用数组填充你的$数组。那样js_array [0]仍然是一个数组,由JS解释为一个对象。您需要另一个嵌套级别才能获得各个值。
答案 2 :(得分:0)
这可能是多维关联数组中的$数组值,它导致json编码上的json对象数组。要查看候选阵列,请尝试
for(i=0;i<5;i++){
alert(JSON.stringify(js_array[i]));
}
答案 3 :(得分:0)
假设您的php数组包含以下内容:
$myArray = array( 'first' => 1, 'second' => 2 );
现在,当您使用json_encode
将其分配到javascript数组时,例如:
var js_array = <?php echo json_encode( $myArray ); ?>
相当于:
js_array = { "first" : "1", "second" : "2" }; // output of json_encode
所以基本上你的js_array
变量 是 一个对象。
您可以像这样查看其内容:
console.log( js_array );