【问题标题】:How do I retrieve location data from javascript using Ajax $_POST in PHP?如何在 PHP 中使用 Ajax $_POST 从 javascript 中检索位置数据?
【发布时间】:2015-07-10 22:01:13
【问题描述】:

我无法让以下代码在 PHP 中运行。我想检索用户位置,然后将其发送到我的 php 脚本以在服务器上进行进一步处理。 Php 不会检索数据。

编辑:

    <!DOCTYPE html>
<html>
<head>
<script src="//code.jquery.com/jquery-1.11.3.min.js"></script>
</head>
<body>


<script>

if (navigator.geolocation) {
  navigator.geolocation.getCurrentPosition(successFunction, errorFunction);
  } else {
  alert('Geolocation is required for this page, but your browser doesn&apos;t support it. Try it with a browser that does, such as Opera 10.60.');
}

function successFunction(position) {
  var lat = position.coords.latitude;
  var long = position.coords.longitude;
  var latlong = {"lat" : lat , "long" : long};
  var latlong_encoded = JSON.stringify(latlong);

  $.ajax({
   url: 'PostTest.php',
   type: 'POST',
   data: {"userLocation" : latlong_encoded},
   success: function(data) {
        alert(latlong_encoded);
   }
});

}

function errorFunction(position) {
  alert('Error!');
}
</script>


</body>
</html>

这里是php代码:

<?php
$lat[]= array('coord'=>json_decode($_POST["userLocation"]));
print_r($lat);
?>

我只是得到一个空数组。 数组 ( [0] => 数组 ( [coord] => ) )

【问题讨论】:

  • “Php 不会检索数据”怎么办?
  • javascript 没问题 - 问题出在Dataprocessing.php,或者,如果这是DataProcessing.php,您错误地认为发布到DataProcessing.php 随后会导致 php 的 sn-p在底部做任何事情
  • 两种方法我都试过了。最初有两个不同的脚本,其中 php 是 Data Processing.php。由于那不起作用,我尝试将其全部放在一个脚本中。我想那是错误的方法。但两者都不起作用,
  • 在您的 PHP 中,您将 $lat 定义为数组两次。从 $lat 中删除 []

标签: javascript php ajax post location


【解决方案1】:

尝试添加

dataType: "json" //for response
contentType: "application/json; charset=UTF-8" //for request

在 ajax 请求中..

我的sn-p:

    if (navigator.geolocation) {
      navigator.geolocation.getCurrentPosition(showLocation);
    }
    else { 
    alert('Geolocation non supported..');
    }

    function showLocation(position) {
        var lat = position.coords.latitude;
        var long = position.coords.longitude;
        $.ajax({
           //YOUR AJAX REQUEST USING LAT, LONG
        });
    }

【讨论】:

  • 还是不行。当我添加数据类型时,成功功能警报不再出现。
  • 然后尝试添加 contentType: "application/json; charset=UTF-8"。
  • 成功功能现在可以工作,但 PHP 似乎没有收到它。 php设置中有什么需要更改的吗?
  • 您是否从 $lat 中删除了 [] ?控制台会说什么吗?检查数据是否发送到 php(chrome 开发者工具中的网络选项卡)。
  • 控制台没有错误,是的,我确实删除了 [ ]
猜你喜欢
  • 1970-01-01
  • 2014-07-21
  • 2016-08-08
  • 2015-09-05
  • 2017-12-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多