将JS输出存储在PHP变量中

时间:2015-01-24 13:03:47

标签: 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来完成,但是我不知道怎么做。

当我提出问题时,如何将这些值存储在PHP变量中?

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

谢谢!

1 个答案:

答案 0 :(得分:1)

是的,你应该使用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”。