所以,我有一个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); ?>;
....