在同一HTML内的PHP和JS之间传递变量

时间:2019-02-27 04:35:06

标签: javascript php json

我正在使用PHP从MySQL读取数据。然后,我尝试在OpenLayer地图上使用同一HTML将这些数据传递给下面的JS。我尝试了包括json_encode在内的各种方法,但似乎无法传递有效数据。当我在JS中手动设置数据时,它工作正常。我的代码在做什么错?有没有首选的方法?

<html lang="en">

                .map {           边距:0;           填充:0;           高度:100%;           宽度:100%;       }               OnTRack用户跟踪      

<?php
// ... Other database code removed for example...
$rowlon = 151.215324;
$rowlat = -33.856733;
?>

<div id="map" class="map"></div>
<script type="text/javascript">
    // var latestlon = <?php echo $rowlon; ?>;
    // var latestlat = <?php echo $rowlat; ?>;
    var latestlon = "<?php echo json_encode($rowlon) ?>";
    var latestlat = "<?php echo json_encode($rowlat) ?>";
    // var latestlon = 151.215324;
    // var latestlat = -33.856733;
    var mycoords = [latestlon, latestlat];
    var map = new ol.Map({
        target: 'map',
        layers: [
            new ol.layer.Tile({
            source: new ol.source.OSM()
            })
        ],
    view: new ol.View({
      center: ol.proj.fromLonLat(mycoords),
      zoom: 12
    })
  });
</script>

2 个答案:

答案 0 :(得分:3)

var latestlon = <?=$rowlon?>;
var latestlat = <?=$rowlat?>;

这里不需要双引号,尤其是json _ *

如果它不起作用,那么您可能在做其他错误,请检查浏览器控制台中是否有错误。

答案 1 :(得分:1)

这可能是由于以下原因

原因-1

 var latestlon = "<?php echo json_encode($rowlon) ?>"; // Type = String
 var latestlat = "<?php echo json_encode($rowlat) ?>"; // Type = String

通过删除双引号将JS变量更改为 type

 var latestlon = <?php echo json_encode($rowlon) ?>; // Type = Number
 var latestlat = <?php echo json_encode($rowlat) ?>; // Type = Number

原因-2

请检查您是否正在使用php文件扩展名

仅供参考:由于该值不是数组,因此不必使用json_encode。

我希望这会有所帮助。