Как я могу хранить вывод переменной JavaScript в переменной PHP?

У меня есть следующий код в JavaScript:

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

PHP код: –

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

Примечание. Я не хочу, чтобы это было в форме. У меня есть некоторая логика в JavaScript, и я хочу использовать ее на той же странице PHP … Пожалуйста, дайте мне знать, как я могу это сделать.

Solutions Collecting From Web of "Как я могу хранить вывод переменной JavaScript в переменной PHP?"

Вы должны помнить, что если JS и PHP живут в одном документе, PHP будет выполнен первым (на сервере), а JS будет выполнен вторым (в браузере) – и они НИКОГДА не будут взаимодействовать (кроме того, где вы вывод JS с PHP, который на самом деле не является взаимодействием между двумя двигателями).

Имея это в виду, самое близкое, что вы могли бы сделать, это использовать переменную PHP в 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 ?> 

Как я уже сказал, в этом сценарии PHP (ВСЕ) выполняет FIRST на сервере, вызывая:

  1. переменная PHP $a которая будет создана как строка 'foo'
  2. значение $a которое выводится в контексте некоторого JavaScript (который в настоящее время не выполняется)
  3. больше сделано с PHP $a
  4. весь вывод, включая JS с назначением var, отправляется в браузер.

Как написано, это приводит к тому, что следующее отправлено в браузер для выполнения (я удалил комментарии JS для ясности):

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

Затем, и только после этого, JS начнет выполнение с собственной переменной, a установить значение «foo» (в этот момент PHP не работает).

Другими словами, если они живут в одном документе и никакого дополнительного взаимодействия с сервером не выполняется, JS не может вызывать никакого эффекта в PHP. Кроме того, PHP ограничен в своем влиянии на JS на простоту вывода некоторого JS или чего-то в контексте JS.

 <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> 

Идеальный метод состоял бы в том, чтобы передать его вызовом AJAX, но для быстрого и грязного метода все, что вам нужно сделать, это перезагрузить страницу с помощью этой переменной в параметре $_GET

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

Ваша страница будет перезагружена и теперь на вашем PHP вы получите доступ к переменной $_GET['a'] .

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

Если это связано с отправкой формы, используйте скрытый ввод в форме и измените значение скрытого ввода на это значение переменной. Затем вы можете получить это скрытое входное значение на странице php и назначить его переменной php после отправки формы.

Обновить:

Согласно вашему редактированию, кажется, вы не понимаете, как работает javascript и php. Javascript – это клиентский язык, а php – это серверный язык. Поэтому вы не можете выполнить javascript-логику и использовать это значение переменной для переменной php при выполнении соответствующей страницы на сервере. Вы можете запустить соответствующую логику JavaScript после того, как браузер клиента обработает веб-страницу, возвращенную с веб-сервера (который уже выполнил PHP-код для соответствующей страницы). После выполнения кода javascript и после присвоения соответствующего значения соответствующей переменной javascript вы можете использовать отправку формы или ajax для отправки значения переменной javascript для использования другой php-страницей (или запроса на обработку и получение той же самой php-страницы ).

Вы действительно не можете. PHP генерируется на сервере, а затем отправляется в браузер, где JS начинает делать это. Итак, что бы ни случилось в JS на странице, PHP не знает, потому что это уже сделано. @manjula правильно, что если вы хотите, чтобы это произошло, вам нужно было бы использовать POST или ajax.