Problème avec appel $.ajax POST vers PHP

pat -  
 pat -
Bonjour,

Je souhaite faire transiter une variable "latitude" d'une page html vers une page PHP. Ma page PHP contient simplement un echo $_POST et je ne comprend pas pourquoi $_POST contient "Array" lorsque j'exécute mon appel AJAX (c'est le popup qui s'affiche avec le alert (msg), alors que j'aimerais récupérer ma variable latitude qui vaut 48.7557558). Des idées ? :-)


function getCoordPosition(){

    if(navigator.geolocation){
        navigator.geolocation.getCurrentPosition(function(position){
            var latitude = position.coords.latitude;
            var longitude = position.coords.longitude;
            var altitude = position.coords.altitude;
           document.getElementById('geolocation').innerHTML = 'latitude : ' + latitude + '<br />' + 'longitude : ' + longitude + '<br />' + 'altitude : ' + altitude + '<br />';
 
            $.ajaxSetup({
               url: "insert-in-bdd.php",
               type: "POST",

            });
                   
                               $.ajax({
				data: 'latitude='+latitude+'&longitude='+longitude,        
				
				success: function (msg) {
                                alert (msg);},
				
				error: function (XMLHttpRequest, textStatus, errorThrown)
				{   
                               alert('Error submitting request.'); 
				}
				
				}); 

        });
    }

}




2 réponses

  1. Mimiste Messages postés 1159 Statut Membre 206
     
    bonjour

    $_POST est un tableau qui contient l'ensemble des valeurs passé en post. Même si php n'est pas un langage totalement typé, faire un echo de $_POST affichera array c'est tout a fait normal.

    Pour récuperer une valeur faut lui passer un index, genre $_POST['latitude'] ou bien $_POST[0] etc...
    1
    1. pat
       
      Merci Mimiste pour ta réponse, j'essayerai dès que possible.
      0
  2. pat
     
    Bonjour,

    J'ai modifié ma requête pour récupérer les index latitude et longitude et je n'obtiens pas d'erreur. Toutefois, ma table mySQL reste vide => lng = 0.000000 :-(

    Même résultat si je fais un UPDATE avec $req = $bdd->prepare('UPDATE location SET lat = :lat');.

    Voici le code PHP:

    <?php
     header('Content-type: text/html; charset=ISO-8859-1');
    try
    {
       if(isset($_POST['latitude']) && isset($_POST['longitude'])){
    	$pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
        $bdd = new PDO('mysql:host=localhost;dbname=madb', 'root', '');
    	$req = $bdd->prepare('INSERT INTO location(lat) VALUES(:lat)');
    	$req->execute(array(
    	'lat' => $_POST['latitude'],
    	'lng' => $_POST['longitude'],
    	));
        }}
    catch (Exception $e)
    {
            die('Erreur : ' . $e->getMessage());
    }
    ?> 
    0