2

所以,我有一个 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>
4

3 回答 3

2

如果您要做的是构建一个 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>
于 2012-04-20T08:41:43.123 回答
0

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

<script>
...
var geojson_Polygon = <?php echo json_encode($all_rows); ?>;
....
于 2012-04-20T09:49:18.790 回答
0

我认为你应该这样做

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

否则值始终相同

于 2012-04-20T08:13:41.087 回答