在循环中分配一个带有 PHP/Postgresql 查询值的 javascript 数组


Assigning a javascript array with PHP/Postgresql query values in a loop

所以,我有一个postgresql数据库,我正在查询特定列的值并将每个值分配给javascript数组。现在我有一个javascript函数,可以将这些数据输出到地图上。当我手动测试数组(逐个输入相应的数组索引)时,它会完全正常地返回输出。但是在一个循环中(当我想一次输出所有内容时),我只能看到第一个元素的输出。数组的其余部分将被忽略或出现错误。我不明白错误在哪里。代码如下:

<script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?key=AIzaSyC0HZ81Ea8Jy8fJ6zm6_uvPp8UhLg5mczo&sensor=true"></script>
<script type="text/javascript" src="GeoJSON.js"></script>
<script type="text/javascript" src="polygon.js"></script>

<script type="text/javascript">
var geojson_Polygon = new Array();
function kaushik()
{
    <?php
        require("header.php");
        $connection = pg_connect($full);
        if(!$connection)
        {
            pg_close($connection);
        }
        $result = pg_query($connection, "SELECT ogc_fid, ST_AsGeoJSON(wkb_geometry), name FROM features");
        if (!$result) 
        {
            exit;
        }
        $i = 0;         
        while ($row = pg_fetch_row($result)) 
        {   
            echo "'n";
            echo "geojson_Polygon[$i] = $row[1];";
            echo "'n";
            echo "'n";
            $i++;
        }
    ?>
    for (var j=0; j<317; j++)
    {
        showFeature(geojson_Polygon[j]);
    }

}
</script>

如果你想做的是建立一个JS数组,那么只需做:

<script type="text/javascript">
   var data = [ <?php
      // --- snip
      $first = true;
      while ($row = pg_fetch_row($result)) 
      {
          if ( $first )
          {
             $first = false;
          }else{
             echo ',';
          }
          echo $row[$i]
      }
      // ---- snip
   ?> ];
</script>

我认为你应该这样做

 while ($row = pg_fetch_row($result)) 
    {   
        echo "'n";
        echo "geojson_Polygon[$i] = $row[$i];";
        echo "'n";
        echo "'n";
        $i++;
    }

否则值始终相同

只需将行读取到 php 数组中,然后将其分配为 json。

<script>
...
var geojson_Polygon = <?php echo json_encode($all_rows); ?>;
....