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

印刷している値は配列ではありません。したがって、次のように印刷する必要があります。

print $_POST['lat'];

(また)

echo $_POST['lat'];

AND NOT

print_r($_POST['lat']);

すべての投稿値の意味を印刷したい場合は、次のように印刷できます。

print_r($_POST);
于 2013-06-21T11:29:36.087 に答える
0

私は自分の問題を自分で解決しました。ここで私がやったこと。というファイルをもう 1 つ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';
?>

これが将来誰かを助けることを願っています。

于 2013-06-21T13:44:06.847 に答える