2017-10-01 9 views
0

ユーザーの現在地を取得しようとしています。AJAXを使用してJS変数をPHPに渡すことができません

私は現在の緯度と経度を取得するJSスクリプトを持っています。これは、AJAXでjs変数をindex.phpに送信します。

$(document).ready(function() { 
if ("geolocation" in navigator){ 
    navigator.geolocation.getCurrentPosition(function(position){ 
      var userLat = position.coords.latitude; 
      var userLong = position.coords.longitude; 
      console.log(userLong); 
      console.log(userLat); 

      $.ajax({ 
       type: 'POST', 
       url: 'index.php', 
       data: { 
       userLat : userLat, 
       userLong : userLong 
       }, 
       success: function(data) 
       { 
        console.log(data); 

       } 

      }); 

    }); 
}else{ 
    console.log("Browser doesn't support geolocation!"); 
}}); 

それから私は私のindex.phpでこれを行うにしようとしています:

echo $_POST['userLat']; 
echo $_POST['userLong']; 

何も現れません。前もって感謝します。

+2

ブラウザのデバッグツールで、コンソールにエラーがありますか?どのネットワーク要求が行われ、どのようなデータがその要求に含まれていますか?あなたがデバッグすると、AJAXの呼び出しはまったく行われますか?サーバーの応答は正確には何ですか? – David

+0

正しい出力を示します。 console.log(userLong); console.log(userLat); 他には何もエラーはありません。また、コンソール、ログ(データ)はページコード全体を表示しますが、私はなぜそれがわかりません。 –

+0

それは、そのAJAXリクエストによって返されたものを示しています。 'index.php'がページ全体を返すと、ページ全体が表示されます。あなたはAJAXの値を正確にどこで探していますか?コンソールログの応答を確認していませんか? – David

答えて

1

何も表示されません。現時点ではPOSTがないので、あなたがinde.phpを閲覧することで任意のものを得ることはありません

そして、それは、正しいだ、AJAXは内部にあり、index.phpのからの結果を表示する唯一の方法は、ページ内にありますあなたはそれからajaxコールを送信します。この時

success: function(data) 
      { 
       console.log(data); 

      } 

ように例alert(data)またはdocument.getElementById("someelement").innerHTML=data;とのために、によって、index.phpのから来て、あなたのデータを表示する場所をコントロールすることができます。

1

ajaxにはdataTypeを定義して返してください。

はindex.phpのエンコードに続いてajaxオプション

dataType: 'json', 

のリストにこれを追加し、JSON文字列をエコー。 「userlat」と「userLong」とそれぞれに関連する値:二つのアイテムを持つオブジェクトを表示する必要があります

echo json_encode($_POST); 

成功関数のconsole.log(data);

echo $_POST['userLat']; 
echo $_POST['userLong']; 

はそれらを置き換える行を削除します。または、 $_POSTにこれらの2つの項目がある場合は、

ブラウザ画面を更新するには、dataを使用してDOMを変更する必要があります。

+0

は今、私のAJAXコードは次のようになります:userLong }、 成功:関数(データ) {にconsole.log(データ); }})。 とindex.php echo json_decode( '$ _ POST');があります。 console.log(data)のコンソールログと "echo"はまだありません。今は空です。 –

+0

'json_decode'ではなく' json_encode'でなければなりません。また、 '$ _POST'を一重引用符で囲みます。この 'echo json_encode($ _ POST);を使用してください。 – DFriend

+0

ajaxリクエストを処理する関数からの' echo'はブラウザの出力に送られません。あなたのajaxステートメントの 'success'関数に送られます。 – DFriend