无法通过ajax调用检索$ _POST值

时间:2013-06-21 11:20:11

标签: php ajax html5 jquery

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

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

3 个答案:

答案 0 :(得分:3)

获取在成功回调中打印它所需的值

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

如果你把

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

您将在警告框中获得该值。

编辑:您可以使用以下方式检查php是否来自Ajax:

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

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

答案 1 :(得分:0)

您要打印的值不是数组。所以你必须打印出来,

print $_POST['lat'];

(OR)

echo $_POST['lat'];

AND NOT

print_r($_POST['lat']);

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

print_r($_POST);

答案 2 :(得分:0)

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

<强> test.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>

<强> Test2.php

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

希望这将有助于将来。