【问题标题】:PHP array to JavaScript array shows [object, object]PHP 数组到 JavaScript 数组显示 [object, object]
【发布时间】:2014-09-04 10:08:37
【问题描述】:

我一直在尝试将 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>

【问题讨论】:

  • 这有什么问题?毕竟是一个对象。
  • 不要将alert用作调试工具。试试console.log(js_array) 并检查浏览器的控制台。

标签: javascript php arrays json


【解决方案1】:

这可能是你的 $array 值是多维关联数组,它导致 json 对象数组在 json 编码上。要查看您的候选数组,请尝试

 for(i=0;i<5;i++){
alert(JSON.stringify(js_array[i]));
}

【讨论】:

    【解决方案2】:

    因为 mysql_fetch_assoc 返回的每一行都是一个关联数组,它基本上是一个散列“键/值”,被 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

    【讨论】:

      【解决方案3】:

      $row 作为 mysql_query_result 已经是一个数组,所以你用数组填充你的 $array。这样 js_array[0] 仍然是一个数组,被 JS 解释为一个对象。您需要另一个嵌套级别才能获得各个值。

      【讨论】:

        【解决方案4】:

        假设你的 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 );
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2017-10-09
          • 2014-07-28
          • 1970-01-01
          • 2015-03-16
          • 1970-01-01
          • 2020-04-08
          相关资源
          最近更新 更多