【问题标题】:Problems in passing PHP array to JavaScript将 PHP 数组传递给 JavaScript 的问题
【发布时间】:2015-11-17 15:38:13
【问题描述】:

我了解将 PHP 数组传递给 Javascript 的格式是:

<script type="text/javascript">
    var obj = <?php echo json_encode($php_variable); ?>;
</script>

我有一个 php 函数,它将一些值存储在经度和纬度数组中。这些数组确实在 php 中保存了正确的值,因为 php 中的 print_r() 向我显示该数组是正确的。

print_r($latitude_array);
print_r($longitude_array);

现在,我以这种方式将这个数组传递给 JS:

<script>
var lati_array = "<?php echo json_encode($latitude_array); ?>";
var longi_array = "<?php echo json_encode($longitude_array); ?>";
alert(lati_array[0]);
</script>

一开始,当我打开 HTML 文件时,它会显示一个空数组(这是意料之中的,因为 PHP 数组尚未填充)。然后用户输入一些东西,php 数组充满了经度和纬度。这些值现在应该传递给 JS。但是,之后它不会发出任何警报。我不能确定数组是否成功传递给 JS。我错过了什么?

【问题讨论】:

  • 用户填写详细信息后,您触发此代码的方式是什么?
  • PHP、HTML 和 JS 都是同一个文件的一部分。 PHP 从用户那里获取值——根据这些值在本地文件中搜索并得出经度和纬度。现在,我正在尝试将其传递给 JS,因为我想在 GoogleMaps 上标记它们。

标签: javascript php arrays


【解决方案1】:

试试这个:

<script>
    var data = <?php echo json_encode( $data ); ?>;
</script>

【讨论】:

  • legotin 是正确的,不要将数组用引号引起来,否则你有一个javascript字符串而不是一个数组。
  • 我稍微改了一下,请重试
  • @legotin 你是对的。这对我有用。不应该在其中包含引号。
  • 不,这里不是这样" (double quotes lead to invalid JSON format)@VictoriaFrench
【解决方案2】:

尝试如下:

<?php
$array_var = array(111, 222, 333, 444);
?>
<script>
    var array_var = "<?php echo json_encode($array_var); ?>";
    console.log(array_var);

    array_var = JSON.parse(array_var);
    console.log(array_var);

    alert(array_var[0]);
</script>

【讨论】:

    【解决方案3】:

    你在 lati_array 中得到一个字符串,尝试将它转换成这样的 json:

    <script>
    var lati_array = "<?php echo !empty($latitude_array) ? json_encode($latitude_array) : ''; ?>";
    var longi_array = "<?php echo !empty($longitude_array) ? json_encode($longitude_array) : ''; ?>";
    lati_array = JSON.parse(lati_array);
    alert(lati_array[0]);
    </script>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-05-16
      • 2012-06-26
      • 1970-01-01
      • 1970-01-01
      • 2014-06-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多