0

我正在尝试获取用户的当前位置。

我有 JS 脚本来使用 AJAX 获取当前的纬度和经度,以将 js 变量发送到 index.php。

$(document).ready(function() {
if ("geolocation" in navigator){
    navigator.geolocation.getCurrentPosition(function(position){
            var userLat = position.coords.latitude;
            var userLong = position.coords.longitude;
            console.log(userLong);
            console.log(userLat);

            $.ajax({
              type: 'POST',
              url: 'index.php',
              data: {
              userLat : userLat,
              userLong : userLong
              },
              success: function(data)
                {
                  console.log(data);

                }

            });

    });
}else{
    console.log("Browser doesn't support geolocation!");
}});

然后我试图在我的 index.php 中执行此操作:

echo $_POST['userLat'];
echo $_POST['userLong'];

什么都没有出现。提前致谢。

4

2 回答 2

1

什么都没有出现。

这是正确的,您将永远不会通过浏览 index.php 得到任何东西,因为此时没有 POST,AJAX 是内部的,显示 index.php 结果的唯一方法是在您从它发送 ajax 调用的页面中.

在这 :

success: function(data)
            {
              console.log(data);

            }

您可以控制在哪里显示来自 index.php 的数据,例如alert(data) ordocument.getElementById("someelement").innerHTML=data;等​​等。

于 2017-10-01T20:55:27.287 回答
1

dataType为 ajax定义和返回 a 可能会有所帮助。

将此添加到您的ajax选项列表中

 dataType: 'json',

然后在 index.php 中编码并回显一个 json 字符串。删除线条

echo $_POST['userLat'];
echo $_POST['userLong'];

将它们替换为

echo json_encode($_POST);

成功函数中的console.log(data);对象应该显示一个包含两个项目的对象:“userlat”和“userLong”以及每个项目的关联值。或者它应该$_POST有这两个项目。

如果您希望浏览器屏幕更新,您将不得不data使用它来修改 DOM。

于 2017-10-01T20:42:56.947 回答