从javascript运行php脚本

从javascript运行php脚本,javascript,php,mysql,google-maps,Javascript,Php,Mysql,Google Maps,我正在尝试向google地图添加标记,并从mysql数据库查询坐标。脚本如下所示,位于名为connection.php的文件中 $query=“从污染监测中选择地点、纬度、经度、污染位置”; $result=mysqli\u查询($conn,$query); 而($row=mysqli\u fetch\u数组($result,mysqli\u ASSOC)) { $site=$row['site']; $latitude=$row['latitude']; $longitude=$row['lo

我正在尝试向google地图添加标记,并从mysql数据库查询坐标。脚本如下所示,位于名为connection.php的文件中

$query=“从污染监测中选择地点、纬度、经度、污染位置”;
$result=mysqli\u查询($conn,$query);
而($row=mysqli\u fetch\u数组($result,mysqli\u ASSOC))
{
$site=$row['site'];
$latitude=$row['latitude'];
$longitude=$row['longitude'];
$pollution=$row['pollution'];
echo(“添加标记($latitude,$longitude,$site
$pollution”);\n); }
addMarker()是一个JavaScript函数,已在下面的文件中定义

var icon=new google.maps.MarkerImage(“http://maps.google.com/mapfiles/ms/micons/red.png",
新的google.maps.Size(32,32),新的google.maps.Point(0,0),
新的google.maps.Point(16,32));
var中心=null;
var-map=null;
var-currentPopup;
var bounds=new google.maps.LatLngBounds();
google.maps.event.addDomListener(窗口“加载”,初始化);
功能添加标记(lat、lng、info){
var pt=新的google.maps.LatLng(lat,lng);
边界扩展(pt);
var marker=new google.maps.marker({
职位:pt,
图标:图标,
地图:地图
});
var popup=new google.maps.InfoWindow({
内容:信息,,
最大宽度:500
});
google.maps.event.addListener(标记“单击”,函数(){
如果(currentPopup!=null){
currentPopup.close();
currentPopup=null;
}
弹出。打开(地图、标记);
当前弹出=弹出;
});
google.maps.event.addListener(弹出窗口“closeclick”,函数(){
潘托地图(中);
currentPopup=null;
});
}
函数初始化(){
var mapProp={
中心:新google.maps.LatLng(-29.335989,27.48362299999966),
缩放:17,
mapTypeId:google.maps.mapTypeId.HYBRID,
mapTypeControl:true,
动物控制:对,
scaleControl:对,
街景控制:对,
overviewMapControl:true,
旋转控制:对,
mapTypeControlOptions:{
样式:google.maps.MapTypeControlStyle.HORIZONTAL\u栏
},
导航控制:对,
导航控制选项:{
样式:google.maps.NavigationControlStyle.SMALL
}
};
$.get('connection.php');
var map=new google.maps.map(document.getElementById(“googleMap”),mapProp);
google.maps.event.addDomListener(窗口“加载”,初始化);
上面的脚本用于加载google地图,并且必须将标记添加到地图中。我原以为php脚本(addMarker函数)的结果将与地图一起运行,并将标记添加到地图中,但事实并非如此。JavaScript随后包含在jsp文件中。地图加载,但没有添加标记


我做错了什么?

您应该重写php脚本以生成JSON数据:

header('Content-Type: application/json');

$query = "SELECT site,latitude,longitude,pollution FROM pollution_monitoring.locations";
$result = mysqli_query($conn,$query);

$i = 0;
echo '[';
while ($row = mysqli_fetch_array($result, MYSQLI_ASSOC)) 
{
    if ($i++ != 0) echo ',';
    echo json_encode($row);    
}
echo ']';
然后使用JavaScript添加标记:

$.getJSON('connection.php', function(data) {
    for (var i = 0; i < data[i]; i++) {
        addMarker(data[i].latitude, data[i].longitude, "<b>" + data[i].site + "</b><br />" + data[i].pollution);
    }
});
$.getJSON('connection.php',函数(数据){
对于(var i=0;i“+data[i]。污染);
}
});

呈现的代码是什么样子的?更好的方法是将标记检索为JSON。在结果数组上使用
JSON\u encode
并查看如何将标记检索为JSON。我将上述代码添加到php中。当我运行php文件时,我会得到Parse error:Parse error,根据需要,预期为“)”上面的代码中可能没有语法错误。但是,我刚刚注意到生成的JSON数组不包含逗号。我会马上修复它。