无法使用AJAX将JS变量传递给PHP

时间:2017-10-01 20:16:46

标签: javascript php jquery ajax w3c-geolocation

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

我有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'];

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

2 个答案:

答案 0 :(得分:1)

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

将此添加到您的ajax选项

列表中
 dataType: 'json',

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

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

替换它们
echo json_encode($_POST);

成功功能中的console.log(data);应该显示一个包含两个项目的对象:' userlat'和' userLong'以及每个的相关值。或者如果$_POST有这两个项目,那应该是。

如果您希望更新浏览器屏幕,则必须使用data并使用它来修改DOM。

答案 1 :(得分:1)

  

什么都没有出现。

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

在此:

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

            }

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