关于 js 与 PHP 中的变量值相互转换网上有不少介绍,但很多没有说清楚,造成初学者难以理解,花费不少时间时了多种方法也没有实现数据在前后台之间的传送转换问题.
这里介绍自己实际使用的方法供初学者参考.
一. PHP中的变量值传送入到js中使用
PHP为服务端开发语言, js为前端开发语言, PHP 与 js 之间传送数据属于前后端数据传送. 不过从后端传到前端相对简单.使用PHP的echo 可以直接将后端数据传给前端.下面给出一个示例供参考(在同一个页面上,通过下面两段程序实现数据在前后台开发语言间的传送).
<?php
$longit = 113.323304;
$latit = 22.855515;
$address= "深圳市";
?>
<script type="text/javascript">
var longit = <?php echo $longit ; ?>; // 直接将PHP的变量数值传给JS 变量.
var latit = <?php echo $latit ; ?>;
var addre = '<?php echo $address;?>'; // 注意字符串需要使用 '引号' ,否传过来的不是你想要的数据.
var map = new BMap.Map("allmap"); // 创建Map实例
map.centerAndZoom(addre,12); // 初始化地图,设置中心点坐标和地图级别
// map.centerAndZoom(new BMap.Point(longit, latit),13); // 初始化地图,设置中心点坐标和地图级别 注 : 效果与上面一样.
</script>
二. js中的变量值传送入到 PHP 中使用.
js 中的变量数据要传给PHP 相对比较麻烦一些, 无法直接传送,一般要经过第三方中转.下实例是通过HTML表单来转换处理的.
对于要传送的数据(在地图上点选的 地址和经纬度数据) 先定义一个HTML的对应输入表单:
<form name="frmLogin" method="POST" action="Pointinsert.php" style="margin:1" enctype="multipart/form-data">
<div style="position:absolute;width:350px;height:100px;top:450px;left:10px"><font size="2" face="隶书">
<table width="350" height="100" border="1" cellpadding="0" cellspacing="0" bgcolor="#FFFF00" >
<tr bgcolor="#FFFFFF"><td width="100%">
<span style="font-size: 15px">地点: </span>
<input type="text" name="address" id="address" size="30" maxlength="60" style="font-size:16px;" value="">
</td>
</tr>
<tr bgcolor="#FFFFFF"><td width="100%">
<span style="font-size: 15px">纬度: </span>
<input type="text" name="lat" id="lat" size="25" maxlength="30" value=""><br>
<span style="font-size: 15px">经度: </span>
<input type="text" name="lng" id="lng" size="25" maxlength="30" value="">
</td>
</tr>
<tr bgcolor="#FFFFFF" ><br><td align="center" colspan="1" bgcolor="#CCFFFF">
<span style="display:block; width:350px; text-align:center">
<input name="B" type="submit" style="font-size:16px;" value="提交" class="STYLE1">
</td></tr>
</table>
</div>
</form>
使用百度地图API 获取在地图上点选的地址和经纬度功能得到具体地址数据和经纬度数据,将得到的地址数据和经纬度数据填写到表单中.
<script type="text/javascript">
// 百度地图API功能
var map = new BMap.Map("allmap"); // 创建Map实例
map.centerAndZoom("深圳",12); // 初始化地图,设置城市和地图级别。
map.addControl(new BMap.NavigationControl()); // 添加平移缩放控件
map.addControl(new BMap.ScaleControl()); // 添加比例尺控件
map.addControl(new BMap.OverviewMapControl()); // 添加缩略地图控件
map.enableScrollWheelZoom(); // 启用滚轮放大缩小
map.addControl(new BMap.MapTypeControl()); // 添加地图类型控件
map.addEventListener("click",function(e){ //在地图上按鼠标键
lng = e.point.lng;
lat = e.point.lat;
var marker = new BMap.Marker(new BMap.Point(lng,lat)); // 创建标注
map.addOverlay(marker); // 标注加入到地图上
marker.enableDragging();
var gc = new BMap.Geocoder();
var pt = e.point;
document.getElementById("lng").value = pt.lng; //要传送的经纬度数据先显示在屏幕对应位置
document.getElementById("lat").value = pt.lat;
gc.getLocation(pt, function(rs){
var addComp = rs.addressComponents;
address = addComp.province + addComp.city + addComp.district + addComp.street + addComp.streetNumber;
document.getElementById("address").value = address; //要传送的地址数据先显示在屏幕对应位置
});
});
</script>
下面是PHP 从表单里获取数据写入数据库中.
<?PHP
$address = $_POST['address'];
$lng = $_POST['lng'];
$lat = $_POST['lat'];
if( strlen($address) > 6 ) {
$sql ="INSERT INTO unit_localtion( enterprise_code,unitname,address,Latitude,Longitude,distance,remark)
values ('".$company."','".$name."','".$address."',".$lat.",".$lng.",500,'".$accounts."')";
$result=mysqli_query($conn,$sql);
if ($result) {
echo "<script>alert(' 提交成功!');</script>";
}
else {
echo "<script>alert(' 提交出错!');</script>";
}
}
?>