【问题标题】:How to take php loop value in javascript如何在javascript中获取php循环值
【发布时间】:2017-08-01 04:09:39
【问题描述】:

我有两个常数值 lat1 和 lng1。现在我想在 javascript 中获取这些值,但我做不到。在 php 之外使用脚本时,它可以工作,但在 php 中使用时,它不起作用。我试图用距离显示谷歌地图,这就是为什么我必须使用 while 循环从我的数据库中获取一些价值。帮帮我,伙计们。下面给出我的php代码

**
$qry="SELECT * FROM markers";
$run= mysqli_query($connect,$qry);
while($row=$run->fetch_array()){
    $lat2=$row["lat"];
    $lng2=$row["lng"];
    echo "$lat2"."and"."$lng2"."<br>";
    echo '
        <script>
            var lat1=<?php echo $lat1; ?>;
            var lng1=<?php echo $lng1; ?>;
            var lat2=<?php echo $lat2; ?>;
            var lng2=<?php echo $lng2; ?>;
            var R = 6371; 
            var rlat1 = lat1.toRadians();
            var rlat2 = lat2.toRadians();
            var rlng1 = lng1.toRadians();
            var rlng2 = lng2.toRadians();
            // var diflat= (lat2-lat1).toRadians();
            // var diflng = (lng2-lng1).toRadians();
            var x = (rlng2-rlng1) * Math.cos((rlat1+rlat2)/2);
            var y = (rlat2-rlat1);
            var d = Math.sqrt(x*x + y*y) * R;
            document.write(d);
        </script>
    ';
}

【问题讨论】:

  • 控制台有错误吗?

标签: javascript php performance google-maps distance


【解决方案1】:

你的脚本有错误

echo '
        <script>
            var lat1=<?php echo $lat1; ?>;

考虑一下,关闭 php 标签并编写简单的 html,然后像这样根据需要返回

?>
        <script>
            var lat1=<?php echo $lat1; ?>;

您的整个代码将类似于:

<?php 
$qry="SELECT * FROM markers";
$run= mysqli_query($connect,$qry);
while($row=$run->fetch_array()){
    $lat2=$row["lat"];
    $lng2=$row["lng"];
    echo "$lat2"."and"."$lng2"."<br>";
?>
        <script>
            var lat1=<?php echo $lat1; ?>;
            var lng1=<?php echo $lng1; ?>;
            var lat2=<?php echo $lat2; ?>;
            var lng2=<?php echo $lng2; ?>;
            var R = 6371; 
            var rlat1 = lat1.toRadians();
            var rlat2 = lat2.toRadians();
            var rlng1 = lng1.toRadians();
            var rlng2 = lng2.toRadians();
            // var diflat= (lat2-lat1).toRadians();
            // var diflng = (lng2-lng1).toRadians();
            var x = (rlng2-rlng1) * Math.cos((rlat1+rlat2)/2);
            var y = (rlat2-rlat1);
            var d = Math.sqrt(x*x + y*y) * R;
            document.write(d);
        </script>;
        <?php
}
?>

【讨论】:

    【解决方案2】:

    只需像这样替换你的代码:

    <?php 
    $qry="SELECT * FROM markers";
    $run= mysqli_query($connect,$qry);
    while($row=$run->fetch_array()){
        $lat2=$row["lat"];
        $lng2=$row["lng"];
        echo "$lat2"."and"."$lng2"."<br>";
        echo '
            <script>
                var lat1='.$lat1.';
                var lng1='.$lng1.';
                var lat2='.$lat2.';
                var lng2='.$lng2.';
                var R = 6371; 
                var rlat1 = lat1.toRadians();
                var rlat2 = lat2.toRadians();
                var rlng1 = lng1.toRadians();
                var rlng2 = lng2.toRadians();
                // var diflat= (lat2-lat1).toRadians();
                // var diflng = (lng2-lng1).toRadians();
                var x = (rlng2-rlng1) * Math.cos((rlat1+rlat2)/2);
                var y = (rlat2-rlat1);
                var d = Math.sqrt(x*x + y*y) * R;
                document.write(d);
            </script>
        ';
    }
    ?>
    

    【讨论】:

      【解决方案3】:
      echo '<script>
                  var lat1='.$lat1.';
                  var lng1='.$lng1.';
                  var lat2='.$lat2.';
                  var lng2='.$lng2.';
                  var R = 6371; 
                  var rlat1 = lat1.toRadians();
                  var rlat2 = lat2.toRadians();
                  var rlng1 = lng1.toRadians();
                  var rlng2 = lng2.toRadians();
                  // var diflat= (lat2-lat1).toRadians();
                  // var diflng = (lng2-lng1).toRadians();
                  var x = (rlng2-rlng1) * Math.cos((rlat1+rlat2)/2);
                  var y = (rlat2-rlat1);
                  var d = Math.sqrt(x*x + y*y) * R;
                  document.write(d);
              </script>
           ';
      

      我改变的是删除嵌套的 PHP 标记。相反,您应该用一个点 (PHP echo) 连接回显的字符串。这可能无法保证您的地图可以正常工作,但至少可以让您的 PHP 变得正确。

      【讨论】:

        猜你喜欢
        • 2015-09-05
        • 2020-10-02
        • 2020-08-16
        • 1970-01-01
        • 1970-01-01
        • 2017-08-03
        • 1970-01-01
        • 2017-08-15
        • 2022-01-13
        相关资源
        最近更新 更多