我有一个JS代码返回我的地理位置(纬度,经度),我想在PHP代码中重用这些信息。我的网页有.php扩展名,我设置了全局变量,但它不起作用。 我怎么能这样做?
<script type="text/javascript">
function getCoordPosition(){
if(navigator.geolocation){
navigator.geolocation.getCurrentPosition(function(position){
latitude = position.coords.latitude;
longitude = position.coords.longitude;
});
}
}
</script>
<?php
echo 'Latitude is $latitude';
?>
答案 0 :(得分:2)
你不能只把两者结合起来; Javascript在浏览器中执行,服务器上的PHP(在页面到达浏览器之前)。如果要将Javascript结果传达给服务器,则应使用表单提交,或使用AJAX进行异步请求。
答案 1 :(得分:1)
其中一种方法来自$ _GET方法
var test1 = "myvalue";
var link = "thispage.php";
window.location = link+"?test1="+test1;
然后从testpage.php
另一种方法是对PHP页面的$ .get或$ .post请求。
$.post("mypage.php", {
myvar : "myvalue",
"myanothervar" : "myanothervalue"
}, function(data) {
//data contains the output from the script
});
答案 2 :(得分:1)
我认为问题在于您将客户端代码(javascript)与服务器端代码(php)混合在一起。由于客户端运行时尚不存在,服务器上的php无法在运行时从客户端访问信息。客户必须将其提交回服务器以供使用。
执行php代码并将响应发送到客户端。然后从页面顶部到底部执行客户端页面。此时,服务器不知道客户端上发生了什么。您可以加载客户端页面,然后使用jQuery将服务器端调用(AJAX)返回给php以传递信息。
类似的东西(我在jQuery上有点生疏)
$。get('myurl / sendgeolocation',{lat:lattitude,long:longitude},function(data){});
然后你会希望服务器在函数(数据)回调中做任何需要做的事情来根据需要或其他任何方式更新屏幕。
答案 3 :(得分:0)
您的PHP代码首先由服务器处理,然后发送给查看器。然后执行JavaScript代码,因此PHP无法知道JavaScript在JavaScript之前处理了什么。您可以使用AJAX将JavaScript信息传递给PHP脚本,然后从中获取一些东西,但这实际上取决于您想要对所有这些做些什么。
答案 4 :(得分:0)
这正是您期望的答案
//的index.php
<html>
<head>
<script type="text/javascript" src="jquery.min.js"></script>
<script type="text/javascript">
function getCoordPosition()
{
if(navigator.geolocation)
{
navigator.geolocation.getCurrentPosition(function(position){
latitude = position.coords.latitude;
longitude = position.coords.longitude;
obj ={};
obj.latitude = position.coords.latitude;
obj.longitude= position.coords.longitude;
//latlngvalue = $.get('index.php',obj,"html");
$.ajax({
url:'fetch.php',
data:obj,
dataType:'html',
success:function(obj){
latlng = obj.split('-');
$('#latlng').html("Latitude : "+latlng[0]+"| Longitude :"+latlng[1]);
}
});
});
}
}
</script>
</head>
<body>
<div id="latlng"></div>
<button onclick="getCoordPosition()" >Get Geocode</button>
</body>
</html>
// fetch.php
<?php
if(isset($_GET['latitude']) && isset($_GET['longitude'])):
echo $_GET['latitude'].'-'.$_GET['longitude'];
endif;
?>