尝试使用从数据库查询的lat / long在Google地图上绘制标记的新方法。当我在jquery脚本标记中创建变量时,它可以工作但我无法在该脚本之外进行调用。但是,当我尝试使用该脚本之外的php数组中的json_encode设置这些变量时,控制台将返回
未捕获的SyntaxError:意外的令牌<指数:HTML:29
<!DOCTYPE html>
<html>
<head>
<style>
#map {
width: 1200px;
height: 900px;
}
</style>
<script src="https://maps.googleapis.com/maps/api/js"></script>
<script src="http://code.jquery.com/jquery-1.11.3.min.js">></script>
<script type = "text/javascript">
function initialize() {
var myLatlng = new google.maps.LatLng(38.4403, -122.5463);
var mapOptions = {
zoom: 10,
center: myLatlng
}
var map = new google.maps.Map(document.getElementById("map"), mapOptions);
var marker = new google.maps.Marker({
position: myLatlng,
title:"Hello World!"
});
marker.setMap(map);
}
var latitude = <?php echo json_encode($lat);?>;
var longitude = <?php echo json_encode($long);?>;
var LatLong = new google.maps.LatLng(latitude, longitude);
var marker1 = new google.maps.Marker({
position: LatLong;
title:"Test"
});
marker1.setMap(map);
</script>
</head>
<body onload = "initialize()">
<div id="map"></div>
</body>
</html>
PHP查询数据库:
<?php
require("server_info.php");
$connection=db2_connect($database, $username, $password);
if (!$connection) { die('Not connected : ' . db2_conn_error());}
$query = "SELECT lat,long FROM SCHOOL";
$stmt = db2_prepare($connection, $query);
$result = db2_execute($stmt);
$lat = array();
$long = array();
while ($row = db2_fetch_array($stmt)) {
$lat = $row[0];
$long = $row[1];
}
//echo json_encode($lat);
//echo json_encode($long);
db2_close($connection);
?>
答案 0 :(得分:0)
问题是您的文件名为index.html
。默认情况下,只使用PHP执行后缀为.php
的文件。由于它具有.html
扩展名,因此网络服务器只是将文件逐字地返回给浏览器,而不是通过PHP运行它,因此<?php echo json_encode($lat); ?>
被发送到客户端,而且这不是有效的Javascript。
您应该将其重命名为index.php
,然后使用PHP执行,变量将被替换。
但看起来问题还不止于此。您永远不会在脚本中的任何位置设置变量$lat
和$long
。您将它们设置为完全不同的脚本。
你应该做的是使用AJAX从Javascript调用查询脚本。