2

我对ajax没有什么问题。这是我到目前为止所做的代码:

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.1/jquery.min.js"></script>
<script>
$(document).ready(function(){ 
    getLocation();
});

function getLocation()
{
  if (navigator.geolocation)
    {
    navigator.geolocation.getCurrentPosition(showPosition);
    }
  else{
      alert("Geolocation is not supported by this browser.");
    }
  }
function showPosition(position)
{
    latitude =position.coords.latitude;
    longitude= position.coords.longitude;
    $.post({ url: 'test.php',
    data : ({lat :latitude,long:longitude}),
    success: function(data){
        alert('done');
    }});

}

我想要做的是调用文档准备好的函数,并尝试在我调用这个脚本的同一个文件上检索 ajax 调用的值。每当我重新加载页面时,我都没有得到任何值:

print_r($_POST['lat']); 

我不知道实际问题是什么,我已经在控制台中检查过并且没有收到任何错误。请帮忙。

4

3 回答 3

3

要获取您需要在成功回调中打印的值

$.post({ url: 'test.php',
    data : ({lat :latitude,long:longitude}),
    success: function(data){
        alert(data);
    }
});

如果你把

if (isset($_POST['lat']) {
    print_r($_POST['lat']);
}

您将在警报框中获得值。

编辑:如果请求来自 Ajax,您可以使用以下方法检查 php:

if ($_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest') {
    if (isset($_POST['lat']) {
        print_r($_POST['lat']);
    }
    exit();
}

如果你把它放在开头,你只会看到print_r来自 ajax 调用的那个。

于 2013-06-21T11:24:59.430 回答
0

我自己解决了我的问题。这是我所做的。我又创建了一个名为的文件test2.php,并将我的 php 脚本放在那里,并在我的 ajax 调用中调用该文件。这里是代码。

测试.php

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.1/jquery.min.js"></script>
<script>
$(document).ready(function(){ 
    getLocation();
});

function getLocation()
{
    if (navigator.geolocation)
    {
        navigator.geolocation.getCurrentPosition(showPosition);
    }
    else{
        alert("Geolocation is not supported by this browser.");
    }
}

function showPosition(position)
{
    latitude =position.coords.latitude;
    longitude= position.coords.longitude;

    $.ajax({ url: 'test2.php',
    data : ({lat :latitude,long:longitude}),
    type: 'post',
    success: function(data){
        if(data=='true'){
            window.location = "http://example.com";
        }
    }
    });
}   
</script>

测试2.php

//just for example
<?php 
   echo 'true';
?>

希望这对将来的人有所帮助。

于 2013-06-21T13:44:06.847 回答
0

您正在打印的值不是数组。所以你必须像这样打印它,

print $_POST['lat'];

(或者)

echo $_POST['lat'];

并不是

print_r($_POST['lat']);

如果要打印所有帖子值的意思,则可以将其打印为,

print_r($_POST);
于 2013-06-21T11:29:36.087 回答