0

我有一个将纬度、经度值发送到我的 postgresql 数据库的应用程序。我想使用 jquery,ajax 在我的 OpenLayers 地图上相应地绘制更新点。但这是我坚持的地方:当我单击按钮时,正在发生具有数据库连接并将表的最后一个条目保存在数组中的 php 文件。

但是当我尝试在标记中使用输出时,什么都没有发生。

如何在我的函数中使用 php 的输出值?

这是我尝试使用的代码。

.php 文件:

<?php
$conn = pg_connect("host=xxx port=xxx dbname=xx user=postgres password=xxx");
$result = pg_exec($conn,"Query goes here");
$numrows = pg_numrows($result);
for($ri = 0; $ri < $numrows; $ri++)
{
$row = pg_fetch_array($result, $ri);
$data = array(); // create a variable to hold the information
  $lat_latest[] = $row["latitude"];
$long_latest[] = $row["longitude"];  // add the row in to the results (data) array
}
pg_close($conn);
$js_lat = json_encode($lat_latest);
echo "var javascript_lat1 = ". $js_lat . ";\n";
$js_long = json_encode($long_latest);
echo "var javascript_long1 = ". $js_long . ";\n";
?>

我的页面代码是:

function init(){
//openlayers map code is here.
    $("button").click(function(){
    $.get("dataconn.php",function(data,status){

    alert("Data:"+data+"Status:" +status);
    var extra_point = new OpenLayers.Feature.Vector(
     new OpenLayers.Geometry.Point(parseFloat(javascript_long1[0]),parseFloat(javascript_lat1[0])),
     {some:'data'},
     {externalGraphic: 'images1/marker-gold.png', graphicHeight: 16, graphicWidth: 16});
     vectorLayer1.addFeatures([extra_point]);
    });
    });
    }
    </script>
    </head>
    <body onload='init();'>
    <div id="map" style = 'width: 1075px; height: 485px'>
    <button> Update </button>
    </div>

单击更新按钮时我收到的警报是

Data: 
var javascript_lat1 = ["output of the query"];
var javascript_long1 = ["output of the query"];
Status : success

我尝试访问查询输出值的方式是否正确?请帮忙。对不起,如果这是一个愚蠢的问题。我是 jquery 的新手。

4

1 回答 1

1

当您的 php 脚本发送如下字符串时:

'var javascript_lat1 = ["output of the query"];'

回到您的代码,这并不意味着您的代码中有一个名为 javascript_lat1 的变量。

您的 php 脚本正在将字符串发送回您的 javascript 代码,您必须从中提取要在代码中使用的信息。知道字符串的格式取决于您的 javascript 代码。但是由于您编写了 php 脚本,您可以将字符串以您想要的任何格式发回。然后,您的 javascript 代码可以使用正则表达式、split() 等剖析字符串,以提取您想要在代码中使用的字符串部分。您的 php 代码可以使用的一种非常简单的格式是:

"output of query 1, output of query 2"

然后您可以使用逗号 split() 来分隔两条数据,例如:

var pieces = data.split(', ');

然后你可以在你的javascript代码中使用pieces[0]和pieces[1]。

另一种选择是使用 $.getJSON() 函数向您的 php 脚本发送请求。如果你这样做,你的 php 脚本应该发回一个 json 格式的字符串,例如:

"{lat1: 'blah blah blah', long1: 'foo bar foo bar'}"

然后 $.getJSON() 函数会自动将字符串转换为 javascript 对象并将 js 对象传递给您的回调函数。在回调函数中,您可以使用以下方式访问数据:

some_func(data.lat1, data.long1);
于 2013-04-25T07:11:29.953 回答