我正在尝试设置本地的PostGIS数据库中使用的本地传单地图。我已经编写了一个执行查询的PHP文件,但似乎无法正常工作-我对Javascript和PHP都是陌生的,而且不确定如何解决我遇到的问题。
每当我加载index.html时,它都会在PHP文件上运行Ajax请求。该请求只是失败而没有显示任何错误消息。
我认为问题出在PHP文件中,但是打开并没有太大帮助-Web控制台不会报告任何错误,并且显示的内容如下:
$attr{ // echo $attir.", "; //} //echo ";"; //}
这是PHP文件:
<!DOCTYPE html>
<html>
<body>
<h1>Query</h1>
<?php
#header("Access-Control-Allow-Origin: *");
#Set header
#header('Content-type: application/json');
ini_set('display_errors', 1);
error_reporting(E_ALL);
#Get Data
#$parameter1 = $_POST['lat'];
#$parameter2 = $_POST['long'];
$host= 'localhost';
$port= '5432';
$dbname = 'database';
$user = 'user';
$password = 'password';
$conn = pg_connect("host=$host port=$port dbname=$dbname user=$user password=$password");
if (!$conn) {
echo "Not connected: " . pg_error();
exit;
}
$sql = "SELECT *, ST_AsGeoJSON(ST_Transform(geom, 4326)) AS geojson FROM alb_cr.cr_point WHERE table_id = 761";
if (!$response = pg_query($conn, $sql)) {
echo "Query failed";
exit;
}
while ($row = pg_fetch_row($response)) {
foreach ($row as $i => $attir) {
echo $attir.", ";
}
echo ";";
}
?>
</body>
</html>
这是Ajax请求:
$.ajax({
type: "GET",
url: "localhost/pull.php",
success: function(data){
alert(data);
console.log('passed ' + data);
},
error: function(){
alert("Failed");
}
});
答案 0 :(得分:0)
由于您是PHP和Java的新手,所以我可以允许我为您提供一些架构建议。
首先,您需要拥有index.php(或根据您的设计,任何页面应显示查询结果),以将页面主体与AJAX脚本合并到页面主体中,或者(最好)作为单独的脚本与您可能还需要其余的JS,就像在jQuery(用于AJAX)中所做的一样。
<?php
//Output initial page contents
$html = <<<HTML
<!doctype html>
<html>
<head>
<!--include jQuery library since, you use it for AJAX-call-->
<script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
</head>
<body>
<h1>Query</h1>
<div id="result"></div>
<script>
$.ajax({
type: "GET",
url: "localhost/pull.php",
success: function (data) {
alert(data);
console.log('passed ' + data);
},
error: function(){
alert("Failed");
}
});
</script>
</body>
</html>
HTML;
echo $html;
?>
接下来,我将在请求时使用您单独的localhost / pull.php来响应查询结果:
<?php
$host= 'localhost';
$port= '5432';
$dbname = 'database';
$user = 'user';
$password = 'password';
$conn = pg_connect("host=$host port=$port dbname=$dbname user=$user password=$password");
if (!$conn) {
echo "Not connected: " . pg_error();
exit;
}
$sql = "SELECT *, ST_AsGeoJSON(ST_Transform(geom, 4326)) AS geojson FROM alb_cr.cr_point WHERE table_id = 761";
if (!$response = pg_query($conn, $sql)) {
echo "Query failed";
exit;
}
while ($row = pg_fetch_row($response)) {
foreach ($row as $i => $attir) {
echo $attir.", ";
}
echo ";";
}
?>
有了这个,您应该能够在分别执行pull.php时(或者至少让它以一些有意义的错误响应),将所需格式的查询结果发送回控制台。 之后,您可以在客户端查看(在开发人员工具->网络中)您的AJAX请求是否向浏览器返回了数据。