我有一个使用Google Maps API和JavaScript地理定位系统计算距离的PHP脚本。
我想在我的PHP代码中获取当前用户的坐标,例如:
$user_location = array(latitude, longitude);
截至目前,我正在尝试这样的事情:
location.php:
$contents = file_get_contents('user_loc.html');
if ($contents != "false") {
$user_location = explode(',', $contents);
}
// Do stuff with coordinates
user_loc.html:
<!DOCTYPE HTML>
<html>
<head>
<script type="text/javascript">
navigator.geolocation.getCurrentPosition(
function (position) {
console.log(position.coords.latitude);
document.write(position.coords.latitude + ',' + position.coords.longitude);
},
function (error) {
document.write("false");
},
{
timeout: (5 * 1000),
maximumAge: (1000 * 60 * 15),
enableHighAccuracy: true
}
);
</script>
</head>
<body>
</body>
</html>
我很确定这不是最好的方法。有什么建议吗?
答案 0 :(得分:0)
函数document.write
只是一个临时DOM操作,不会保存在您的文件中。
正确的顺序是运行html文件,用javascript确定坐标,然后将它们发送到托管你的php文件的服务器(例如通过AJAX)。
jQuery AJAX示例:
// your code above ...
$.post("location.php", { lat: latitude, lon: longitude }, function(data) {
console.log(data);
});
在服务器端location.php,您现在可以打印从html收到的数据:
print_r($_POST);
这称为异步请求。手动打开location.php文件时,您将无法获取任何数据,因为您没有通过任何数据。因此,当html文件被执行时,它使用javascript来确定数据,现在你得到了它,只是想将它发送到服务器。为了获得服务器响应,我实现了一个带有console.log
服务器响应的回调函数,以便您检查结果。