可以暂停 PHP 脚本,使用 HTML/JS 获取 GPS 位置,然后恢复 PHP?
Posted
技术标签:
【中文标题】可以暂停 PHP 脚本,使用 HTML/JS 获取 GPS 位置,然后恢复 PHP?【英文标题】:Possible to pause PHP script, get GPS location using HTML/JS, then resume PHP? 【发布时间】:2014-07-22 09:57:50 【问题描述】:我正在制作一个 php 脚本,它在向用户输出数据之前需要用户的位置。
获取位置的唯一可靠方法是使用 javascript,“navigator.geolocation.getCurrentPosition”
这会引起麻烦,因为在检索位置之前确实需要一些时间。
简单的解决方案是首先呈现一个页面以检索位置,然后在检索时显示一个按钮,用户单击该按钮以重新加载页面(或自动重新加载)。
但最巧妙的解决方案是在同一页面加载时完成此操作(PHP 脚本等待 JS 完成,然后恢复)。
有什么办法吗?
PHP 首先输出地理位置 JS,PHP 脚本暂停,当检索到位置 JS 然后以某种方式向 PHP 脚本发送消息,PHP 脚本继续。
【问题讨论】:
如果您需要数据,请先收集数据,然后在运行之前将值传递给 php 脚本。您不能暂停 php 脚本执行的生命周期以从 js 获取数据 我在想可能有一个“线程 ID”或执行 ID 或类似的东西可以传递给 JS,然后 JS 发送一个 ajax 请求告诉服务器恢复执行。但我想这是不可能的。 sry 这是不可能的,您需要先收集这些信息。 【参考方案1】:没有任何有用的方法可以暂停 php 脚本。
最适合您的工作的方法是打印包含地图或其他数据的占位符 (div) 的 html 代码,等待坐标,将它们作为 ajax 请求发送到您的 PHP 脚本,然后替换空 div包含真实数据的容器(占位符)。
【讨论】:
我同意。 Ajax 以异步方式运行,因此它可以在页面的其余部分运行时运行。用 css 隐藏区域,当 Ajax 从你的 PHP 脚本返回数据时,用数据显示区域 但是我使用PHP来输出所有内容(包括header.php等),所以我想如果不刷新页面(再次运行脚本)就没有办法做到这一点?【参考方案2】:没有办法暂停 php 脚本,即使你可以这样做是不好的做法。对于这种东西,javascript 回调和 ajax 是最好的解决方案。
的第一个参数Geolocation.getCurrentPosition(success, error, options)
是成功回调,因此如果您将 ajax 请求发送到运行 php 脚本的服务器。它将加载您的位置,只有当它成功找到您的位置时,才会触发成功回调,这将是您的 ajax 请求,并且在您的 ajax 成功后,您可以使用 javascript 生成您的 html
类似的东西
Geolocation.getCurrentPosition(function()
$.ajax(
method: 'post',
url: '/request/path',
dataType: 'json',
success: function(result)
);
, error, options)
如果你不擅长 ajax,这是 jQuery ajax 手册给你 http://api.jquery.com/jquery.ajax/
希望对你有帮助
【讨论】:
以上是关于可以暂停 PHP 脚本,使用 HTML/JS 获取 GPS 位置,然后恢复 PHP?的主要内容,如果未能解决你的问题,请参考以下文章