Passage de variable JS vers PHP

Fermé
mrpeek Messages postés 8 Date d'inscription samedi 9 mars 2013 Statut Membre Dernière intervention 10 mai 2019 - 16 déc. 2018 à 23:39
Reivax962 Messages postés 3671 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 - 24 déc. 2018 à 10:21
Bonjour,

Je cherche à récupérer des variables JS dans mon code PHP.
Voici mon code :

<script type="text/javascript">
function maPosition(position) {
  var lat = position.coords.latitude;
  var lon = position.coords.longitude;
}
if(navigator.geolocation)
 navigator.geolocation.getCurrentPosition(maPosition);
</script>



<?php
$latitude =  "<script>document.write(lat);</script>" ;
echo $latitude;
?>



La partie PHP n'affiche rien.
Après plusieurs tests, je me suis aperçu que j'arrivais, avec ce procédé, à récupérer la valeur d'une variable JS si celle-ci était déclaré hors d'une fonction.
Mais ici, rien à faire, je n'arrive pas extraire les valeurs 'lat' et 'lon' pour l'afficher depuis la partie PHP.
Quelqu'un aurait une idée ?
Merci d'avance pour votre aide

7 réponses

mrpeek Messages postés 8 Date d'inscription samedi 9 mars 2013 Statut Membre Dernière intervention 10 mai 2019 2
17 déc. 2018 à 08:41
Bonjour,

Merci Jumulka pour ta réponse.
Pourtant , si je fais ça, j'arrive bien à appeler la variable dans mon code PHP :

<script type="text/javascript">
var a = 123;
</script>


<?php
$a =  "<script>document.write(a);</script>" ;
echo $a;
?>


Je pense que ma requête est plutôt : comment récupérer mes variables hors d'une fonction JS ?

Merci
2
Reivax962 Messages postés 3671 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 008
24 déc. 2018 à 10:21
Bonjour,

Je pense qu'il y a quelque chose que tu n'as pas bien saisi dans les interactions entre PHP et JavaScript.
Il faut bien comprendre que le PHP génère du code source (JavaScript, HTML, CSS), en intégralité, puis envoie toute la page au navigateur client, qui, lui, interprète ce code. Il n'y a pas d'échanges synchrones entre les deux.

Au mieux, on peut utiliser JavaScript pour effectuer des requêtes vers le serveur PHP (ce qu'on appelle AJAX), mais c'est asynchrone (c'est même le premier A de AJAX) : tu ne peux pas espérer que PHP récupère une variable par ce biais à l'emplacement-même du code qui a généré le JavaScript qui a calculé cette variable. Tu seras forcément dans le cadre d'une nouvelle requête.

Le code que tu présentes ici ne signifie pas que PHP a connaissance de la valeur de A. Il n'a connaissance que d'une chaîne de caractère qui, côté client, permet d'afficher A. Cela signifie que tu ne peux pas utiliser ton code pour faire des opérations sur la valeur de A en PHP.
Pour t'en convaincre, avec le code que tu as écris, dans ton navigateur, fais « Afficher le code source ». Tu ne verras pas directement la valeur de A écrite par le PHP ; tu ne verras que ton code javascript qui dit au navigateur d'afficher A. Le PHP n'a jamais connu la valeur de A.

Retiens bien que pour PHP, le JavaScript n'est qu'un bout de texte qu'il envoie au client qui, lui, pourra l'interpréter.

Xavier
1