php to javascript loop



问题

我试图通过通过PHP检索标记,将它们循环到JavaScript数组中,然后将Arrys循环以添加标记。

db查询

require_once("func/connect.php");
$query = "SELECT * FROM site_locations;";
$stmt = $db->prepare($query);
$stmt->execute();

创建JS数组

创建
<script type="text/javascript">
    var lat = new Array();
    var lon = new Array();
    var site = new Array();
    <?php 
    while($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
        $lat = json_encode($row['latitude']);
        $long = json_encode($row['longitude']);
        $site = json_encode($row['site_name']);
        ?>
        lat.push(<?php  echo ''';
                        echo $lat;
                        echo '''; ?>);

        lon.push(<?php  echo ''';
                        echo $lon;
                        echo '''; ?>);
        site.push(<?php  echo ''';
                        echo $site;
                        echo '''; ?>);
        <?php
    }
    ?>
</script>

最后添加循环的JS数组以添加标记

    markers: [
        for (i = 0; i < lat.length; i++) {
            {
                latLng: [lat[i], lon[i]],
                name: site[i]
            },
        }
    ]

目前的存在,这是行不通的。php的一面有效。

也尝试了

    markers: [
        for (var i = 0; i < lat.length; i++) {
            {
                latLng: [lat(i), lon(i)],
                name: site(i)
            },
        }
    ]

您可以在PHP侧进行工作:

<?php 
    $points = array();
    while($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
        $point = new stdClass();
        $coords = array();
        $coords[] = floatval($row['latitude']);
        $coords[] = floatval($row['longitude']);
        $point->latLng = $coords;
        $point->name = $row['site_name'];
        array_push($points, $point);
    }
?>
<script>
var points = <?php echo json_encode($points); ?>;
</script>

然后使用JavaScript变量启动您的地图:

markers: points

您已经 json_encode()值,因此JS中的单个引号正在打破它。使用:

site.push(<?php  echo $site; ?>);

最新更新