2

ジオロケーションの緯度と経度を配列として PHP に渡し、jQuery AJAX を使用してクライアント側に値を返すスクリプトを作成しようとしています。私が見つけた最良の解決策は JSON でした。私の次のスクリプトNULLは、私にはわからない何らかの理由で値を返します。

index.html

<div id="geoloc"></div>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script>
$(document).ready(function(){
            if(navigator.geolocation){
                navigator.geolocation.getCurrentPosition(showPosition);
            } else {
                $('#geoloc').html("<p>Geolocation is not supported by this browser</p>");
            }

            function showPosition(position) {
                var latlng = [ {"lat":position.coords.latitude, "lng":position.coords.longitude}];

                $.ajax({
                    type: "POST",
                    url: "libs/filterstores.php",
                    data: { json: JSON.stringify(latlng) },
                    contentType: "application/json; charset=utf-8",
                    dataType: "json",
                    success: function(data){
                        $('#geoloc').html("Latitude: " + data.lat + "<br />Longitude: " + data.lng);
                    }
                });
            }

        });
</script>

filterstores.php

$currloc = json_decode($_POST['latlng'], true);

$stores = array('lat'=>$currloc['lat'],'lng'=>$currloc['lng']);

echo json_encode($stores);

以下は、ブラウザから「場所を共有」ボタンを押すと返される結果です。

Latitude: sdf
Longitude: sdfsd
4

5 に答える 5

1

AJAX関数で二重のjsonコーディングを行っていると思います。コード化時に問題が発生した場合、JSON 関数は答えとして null を返します。json コード化せずに文字列を渡すだけで、確実に機能します。

function showPosition(position) {
$.ajax({
    type: "POST",
    url: "libs/filterstores.php",
    data: { lat:position.coords.latitude, lng:position.coords.longitude },        
    dataType: "json",
    success: function(data){
    $('#geoloc').html("Latitude: " + data.lat + "<br />Longitude: " + data.lng);
    }
});
}

PHP は、json エンコーディングなしで、POST のみを受け入れる必要があります。

PHP ファイル:

$lat = $_POST['lat'];
$lng = $_POST['lng'];

$stores = array('lat'=>$lat,'lng'=>$lng);

echo json_encode($stores);
于 2013-08-02T06:34:16.957 に答える
0

これを試して

$currloc = json_decode($_POST['json'], true);

代わりは

$currloc = json_decode($_POST['latlng'], true);

またはSCRIPTでこれを試してください

     function showPosition(position) {
            $.ajax({
                type: "POST",
                url: "libs/filterstores.php",
                data: {"lat":position.coords.latitude, "lng":position.coords.longitude},
               dataType: "json",
                success: function(data){
                    $('#geoloc').html("Latitude: " + data.lat + "<br />Longitude: " + data.lng);
                }
            });
        }

PHP ファイル内

$stores = array('lat'=>$_POST['lat'],'lng'=>$_POST['lng']);

echo json_encode($stores);

それが役立つことを願っています

于 2013-08-02T06:34:03.797 に答える