从php查询变量到javascript

时间:2015-11-04 21:13:26

标签: javascript php jquery maps

尝试使用从数据库查询的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);
?>

1 个答案:

答案 0 :(得分:0)

问题是您的文件名为index.html。默认情况下,只使用PHP执行后缀为.php的文件。由于它具有.html扩展名,因此网络服务器只是将文件逐字地返回给浏览器,而不是通过PHP运行它,因此<?php echo json_encode($lat); ?>被发送到客户端,而且这不是有效的Javascript。

您应该将其重命名为index.php,然后使用PHP执行,变量将被替换。

但看起来问题还不止于此。您永远不会在脚本中的任何位置设置变量$lat$long。您将它们设置为完全不同的脚本。

你应该做的是使用AJAX从Javascript调用查询脚本。