web-dev-qa-db-fra.com

Comment puis-je stocker la sortie de variable JavaScript dans un PHP variable?

J'ai le code suivant en JavaScript:

<script>
var a="Hello";
</script>

Code PHP: -

<?php 
$variable = // I want the above JavaScript variable 'a' value to be stored here
?>

Remarque: je ne le veux pas dans une soumission de formulaire. J'ai une certaine logique en JavaScript et je veux l'utiliser dans la même page PHP ... Merci de me dire comment je peux le faire.

10
logan

Vous devez vous rappeler que si JS et PHP résident dans le même document, le PHP sera exécuté en premier (sur le serveur) et le JS en deuxième (sur le navigateur). --et les deux n'interagiront JAMAIS (sauf où vous avez généré JS avec PHP, qui n'est pas vraiment une interaction entre les deux moteurs).

Dans cet esprit, le plus proche que vous puissiez faire est d’utiliser une variable PHP dans votre JS:

<?php
$a = 'foo'; // $a now holds PHP string foo
?>
<script>
    var a = '<?php echo $a; ?>'; //outputting string foo in context of JS
                                 //must wrap in quotes so that it is still string foo when JS does execute
                                 //when this DOES execute in the browser, PHP will have already completed all processing and exited
</script>
<?php
//do something else with $a
//JS still hasn't executed at this point
?>

Comme je l'ai dit, dans ce scénario, le PHP (TOUT) s'exécute en premier sur le serveur, provoquant:

  1. a PHP la variable $a à créer en tant que chaîne 'foo'
  2. la valeur de $a à afficher dans le contexte de JavaScript (qui n'est pas en cours d'exécution)
  3. plus de travail avec le $a de PHP
  4. toutes les sorties, y compris le JS avec l'affectation var, sont envoyées au navigateur.

Tel que rédigé, les éléments suivants sont envoyés au navigateur pour exécution (j'ai supprimé les commentaires JS pour plus de clarté):

<script>
    var a = 'foo';
</script>

Alors, et seulement alors, le JS commencera à s'exécuter avec sa propre variable a définie sur "foo" (à quel point PHP n'est plus dans l'image).

En d'autres termes, si les deux résident dans le même document et qu'aucune interaction supplémentaire avec le serveur n'est effectuée, JS ne peut provoquer d'effet en PHP. De plus, PHP est limité dans son effet sur JS à la simple possibilité de sortir un JS ou quelque chose dans le contexte de JS.

15
JAAulde
<html> 
<head>
    <script>
        var a="Hello";
    </script>

</head> 

<body> 
    <?php 
        echo $variable = "<script>document.write(a)</script>"; //I want above javascript variable 'a' value to be store here
    ?>
</body> 

12
Chetan Ghadiya

La méthode idéale serait de le transmettre avec un appel AJAX, mais pour une méthode rapide et sale, il vous suffirait de recharger la page avec cette variable dans un paramètre $_GET

<script>
  var a="Hello";
  window.location.href = window.location.href+'?a='+a;
</script>

Votre page va recharger et maintenant dans votre PHP, vous aurez accès à la variable $_GET['a'].

<?php 
  $variable = $_GET['a'];
?>
2
Lix

Si cela est lié à une soumission de formulaire, utilisez une entrée masquée à l'intérieur du formulaire et remplacez la valeur d'entrée masquée par cette valeur de variable. Ensuite, vous pouvez obtenir cette valeur d’entrée masquée dans la page php et l’affecter à votre variable php après la soumission du formulaire.

Mettre à jour:

Selon votre édition, il semble que vous ne compreniez pas comment javascript et php fonctionnent. Javascript est un langage côté client et php est un langage côté serveur. Par conséquent, vous ne pouvez pas exécuter de logique javascript et utiliser cette valeur de variable pour une variable php lorsque vous exécutez une page pertinente sur le serveur. Vous pouvez exécuter la logique javascript appropriée après le traitement par le client de la page Web renvoyée par le serveur Web (qui a déjà exécuté le code php de la page concernée). Après l'exécution du code javascript et après avoir affecté la valeur pertinente à la variable javascript appropriée, vous pouvez utiliser la soumission de formulaire ou ajax pour envoyer cette valeur de variable javascript à utiliser par une autre page php (ou une demande de traitement et d'obtenir la même page php ).

1
Manjula

Tu ne peux vraiment pas. PHP est généré sur le serveur, puis envoyé au navigateur, où JS commence à faire son travail. Donc, tout ce qui se passe dans JS sur une page, PHP ne le sait pas car c'est déjà fait, c'est du matériel. @manjula a raison, si vous voulez que cela se produise, vous devrez utiliser un POST ou un ajax.

0
dmayo

Variable JavaScript = PHP variable essayez de suivre: -

<script>
var a="Hello";
<?php
$variable='a';
?>
</script>

Note: -Il ne fonctionne que lorsque vous faites du code PHP sous balise script.

0
Iron shield