我一直试图将PHP数组传递给JavaScript数组,但当我读取该JavaScript数组的内容时,它实际上显示[object,object]。
首先,我用PHP从sql语句中生成一个数组,然后将其更改为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>
这可能是您的$array值是多维关联数组,它导致json编码上的json对象数组。要查看候选阵列,请尝试
for(i=0;i<5;i++){
alert(JSON.stringify(js_array[i]));
}
因为mysql_fetch_assoc返回的每一行都是一个关联数组,基本上是一个散列"key/value",json和javascript认为它是一个对象!
使用mysql_fetch_array代替
mysql_fetch_arrayhttp://au2.php.net/manual/en/function.mysql-fetch-array.php
mysql_fetch_assochttp://php.net/manual/en/function.mysql-fetch-assoc.php
$row作为mysql_query_result已经是一个数组,所以您可以用数组填充$array。这样一来,js_array[0]仍然是一个数组,js将其解释为一个对象。您需要另一个嵌套级别才能获得各个值。
假设您的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 );