2017-10-21 10 views
0

Ce problème a déjà été abordé dans d'autres messages et d'autres forums sur le réseau, mais je ne comprends pas où faux.
J'ai ce javascript code pour la position de l'utilisateur trouver:
mettre à jour les coordonnées géographiques en db

if(!!navigator.geolocation){ 
    navigator.geolocation.getCurrentPosition(geolocalizzami); 
} 
else { 
    alert("Geolocalizzazione non supportata"); 
} 

function geolocalizzami(position) { 
    document.getElementById("lon").innerHTML = position.coords.longitude; 
    document.getElementById("lat").innerHTML = position.coords.latitude; 
} 

et je peux imprimer avec

<label id='lon' /></label> 

et ok. J'ai besoin de charger ces données dans la base de données. Je sais que je dois utiliser jquery et ajax. Le code ajax dans une page html me sert pour trouver les coordonnées et envoyer ces données, avec la méthode post, à la page php. ici, je peux utiliser $ _POST ['value'] pour travailler avec les données. Un exemple, trouvé dans Internet, que je l'utilise est:

page.html:

<!DOCTYPE html> 
<html> 
<head> 
<script src="http://code.jquery.com/jquery-latest.js"></script> 
<script src="http://maps.google.com/maps/api/js?sensor=true"></script> 
<script 
src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"> 
</script> 
</head> 
<body> 
<script type="text/javascript"> 
if (navigator.geolocation) { 

navigator.geolocation.getCurrentPosition(function(position) { 

    $.ajax({ 
     url:'page2.php', 
     data: { 
      'lat': position.coords.latitude, 
      'lng': position.coords.longitude 
     }, 
     type: 'get', 
     success: function (result) { 
      // If your backend page sends something back 
      alert(result); 
     } 
    }); 

    }); 
} 
</script> 
</body> 
</html> 

page2.php:

<?php 
echo $lat = $_POST['lat']; 
echo $lng = $_POST['lng']; 
?> 

Pourquoi $ lat et $ lng sont vide? Merci d'avance.

Répondre

1

changement

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

à

echo $lat = $_GET['lat']; 
echo $lng = $_GET['lng']; 

Ou

type: 'get', 

à

type: 'post', 

Vous êtes m ixing POST et GET qui sont 2 choses différentes en PHP. Je recommanderais d'utiliser un outil comme un facteur pour voir ce qui se passe. Cela vous donne parfois plus d'informations sur ce qui se passe.

Pour les tests purpese vous pouvez changer le $_POST-$_GET et essayer:

$.get("page2.php?lat="+position.coords.latitude+"&lng="+position.coords.longitude, function(data) { 
console.log(data) 
}); 

Il est également plus fréquent d'utiliser

$lat = $_GET['lat']; 
$lng = $_GET['lng']; // POST 

echo $lat; 
echo $lng; 

Ou

echo $_GET['lat']; 
echo $_GET['lng']; // or POST 
+0

Le mélange était mon manque d'attention , mais merci de m'avoir indiqué. Quoi qu'il en soit, j'ai corrigé en utilisant la méthode post des deux côtés mais je ne vois toujours rien. –

+0

J'ai mis à jour ma réponse – SuperDJ

+0

Ils sont toujours les premières armes avec javascript, mais j'ai mis votre code à la place de $ .ajax ({...}) (non?). Avec les deux obtenir et poster, mais je ne vois toujours rien. –