javascript - 将 JS 输出存储在 PHP 变量中

标签 javascript php ajax geolocation

我有以下代码:

<!DOCTYPE html>
  <head>
    <meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
    <title>Google Maps JavaScript API Example: Extraction of Geocoding Data</title>

  </head>

  <body>

<script type="text/javascript">
var showPosition = function (position) {
    document.write(position.coords.latitude + ',' + position.coords.longitude);
}
navigator.geolocation.getCurrentPosition(showPosition);

</script>
</body>

这个小脚本以纬度和经度的形式输出用户的位置。我不想将其输出到页面上,而是想将经度和纬度存储在两个单独的变量中,这样我就可以获得用户位置和给定目的地之间的距离。我做了一些研究,我知道这只能使用 AJAX 来完成,但我不知道该怎么做。

这时我的问题就来了,如何将 JS 中的这些值存储在 PHP 变量中?

此外,如果有任何方法可以更快地计算用户位置和给定目的地之间的公里距离,我愿意接受建议。

谢谢!

最佳答案

是的,您应该使用 AJAX。

请注意,JS(您打算使用它的方式)在客户端(在浏览器中)运行,而php在服务器上运行,在许多情况下导致异步通信,因此出现了 AJAX。

在 JavaScript 代码中,您需要创建一个可以处理通信的 XMLHttpRequest 对象:

var xhr = new XMLHttpRequest();

如何从服务器接收答案的示例:

xhr.onreadystatechange = function () {
    if (xhr.readyState === 4) {
        if (xhr.status == 200) {
            // do something with xhr.responseText
        }
    }
}

如何发送数据的示例:

xhr.open("POST", "serverside.php", true);
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xhr.send(content);

content 将是您发送到服务器的数据,例如“c=HelloWorld”

在服务器端的 php 脚本中,您需要处理接收到的数据。它可能看起来像这样:

<?php    

if (isset($_POST['c'])) {
    echo htmlspecialchars($_POST['c'], ENT_QUOTES, 'UTF-8'); 
}

?>

然后服务器应该响应“HelloWorld”。

关于javascript - 将 JS 输出存储在 PHP 变量中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28125724/

相关文章:

php - 使用 PHP 和 AJAX,两个客户端可以在没有 MySQL 的情况下相互交换数据吗?

javascript - parseInt 替代方案

javascript - JS - 不错的类似 sleep 的功能

javascript - 将变量从 AJAX 发送到 PHP 时出错

javascript - 如何将复杂的 JavaScript 对象发送到 ASP.net WebMethod?

php - 正则表达式匹配字符串的一部分

php - 将 Controller 加载到 cakephp 中的另一个 Controller

javascript - 在FullCalendar dayClick事件中,能否获取点击日期已经存在的事件?

javascript - 为什么下面代码中的alert没有执行:?

jquery - PhoneGap Ajax 请求返回 null