如何在javascript中获取php循环值



我有两个常量值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>
';
}

脚本中存在错误

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
}
?>

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

<?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>
';
}
?>
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变得正确。

相关内容

  • 没有找到相关文章

最新更新