从 PHP 获取 JavaScript 函数输出
Posted
技术标签:
【中文标题】从 PHP 获取 JavaScript 函数输出【英文标题】:Get JavaScript function output from PHP 【发布时间】:2013-10-24 17:27:06 【问题描述】:我有一个 php 脚本,它使用 Google Maps API 和 javascript 地理定位系统计算距离。
我想在我的 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>
我很确定这不是最好的方法。有什么建议吗?
【问题讨论】:
您必须使用 js 在客户端运行才能获取地理位置,然后将其发送回服务器。或者您可以仅根据请求者的 ip 获取地理位置,但这可能不太可靠。 file_get_contents 将获得文件的字符串输出,而不是您要查找的结果。您需要访问该页面,然后在该页面上您可以使用 lat 和 long 对 location.php 进行 POST 并根据需要进行处理 【参考方案1】: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
实现了一个回调函数,以便您检查结果。
【讨论】:
以上是关于从 PHP 获取 JavaScript 函数输出的主要内容,如果未能解决你的问题,请参考以下文章
如何从 Javascript 提示框中获取值并将其传递给 PHP 变量以便能够保存在 SQL 中?