【问题标题】:wrong output in address array after using json_encode() and JSON.parse使用 json_encode() 和 JSON.parse 后地址数组中的错误输出
【发布时间】:2013-10-26 12:09:10
【问题描述】:

我有这个 PHP,它正在从数据库中获取地址列的所有行,我使用 json_encode() 函数将其转换为字符串,并在 javascript 中将其转换为 JSON.parse,但我没有得到预期的输出

 <? 

 include('dbcon.php');
 $result = mysql_query("SELECT address FROM markers");

 while ($row = mysql_fetch_assoc($result)) {
 $new_array[] = $row; 
 }
 print_r($new_array);

 $add_js = json_encode( $new_array );

 print_r($add_js);
 ?>

使用print_r($new_array);,我得到二维数组并在第零个位置得到null。我所做的任何更改都会在第零个位置继续给出 null 。

   var address = [JSON.parse( '<?php echo $add_js ?>' )];

var address 应该存储地址数组,但是当我在数组中发出警报时它会给出输出。

[object Object],[object Object],[object Object],[object Object],[object Object]

我想在从数据库中获取地址后存储地址数组

【问题讨论】:

  • 能否请您发布您的 PHP 生成的结果?
  • 首先通过在代码开头添加 $new_array = arary() 来初始化 $new_array。那么alert就不会显示json字符串了,它是一个对象,而不是使用alert()进行调试,添加console.log(address);并检查您的浏览器控制台 (f11)。
  • 该对象数组有什么问题,您期望什么([object Object] 对于从警报中得到字符串化的对象是可以的)?您确定需要 JSON.parse 表达式周围的括号(数组文字)吗?此外,您不需要使用字符串和显式解析,您可以简单地将 JSON 作为 javascript 文字回显到代码中。
  • php 的结果是 ' Array ( [0] => Array ( [address] => Janak Puri, New Delhi, India ) [1] => Array ( [address] => Sector 63, Noida ) [2] => Array ( [address] => Dwarka, New Delhi, India ) [3] => Array ( [address] => Laxmi Nagar,new delhi ) [4] => Array ( [address] = > Gurgaon, Haryana, India ) ) [{"address":"Janak Puri, New Delhi, India"},{"address":"Sector 63, Noida"},{"address":"Dwarka, New Delhi, India "},{"address":"Laxmi Nagar,new delhi"},{"address":"Gurgaon, Haryana, India"}] ' 这些是来自临时数据库的结果。
  • 你为什么不只使用var address = &lt;?php echo json_encode($some_variable);?&gt;;

标签: javascript php arrays json loops


【解决方案1】:

所以$new_array 是一个关联数组的数组,它在 JavaScript 中被解码为一个对象数组。如果你想要一个字符串数组,那么你需要将字符串存储在$new_array

$new_array = array();
while ($row = mysql_fetch_assoc($result)) {
   $new_array[] = $row['address'];   // <-- This line
}

print_r($new_array);

$add_js = json_encode( $new_array );

print_r($add_js);

【讨论】:

    【解决方案2】:

    我认为这足以满足您的需要:

    var address = <?php echo $add_js ?>
    

    【讨论】:

      猜你喜欢
      • 2016-06-09
      • 2014-01-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多