У меня есть следующий код в JavaScript:
<script> var a="Hello"; </script>
PHP код: –
<?php $variable = // I want the above JavaScript variable 'a' value to be stored here ?>
Примечание. Я не хочу, чтобы это было в форме. У меня есть некоторая логика в 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 на сервере, вызывая:
$a
которая будет создана как строка 'foo' $a
которое выводится в контексте некоторого JavaScript (который в настоящее время не выполняется) $a
Как написано, это приводит к тому, что следующее отправлено в браузер для выполнения (я удалил комментарии 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.