Ваш код разделен на две совершенно отдельные части: на стороне сервера и на стороне клиента .
|
---------->
HTTP request
|
+--------------+ | +--------------+
| | | | |
| browser | | | web server |
| (JavaScript) | | | (PHP etc.) |
| | | | |
+--------------+ | +--------------+
|
client side | server side
|
<----------
HTML, CSS, JavaScript
|
Обе стороны общаются через HTTP-запросы и ответы. PHP выполняется на сервере и выводит некоторый код HTML и, возможно, JavaScript, который отправляется в ответ клиенту, где интерпретируется HTML и выполняется JavaScript. Когда PHP завершит вывод ответа, сценарий завершится, и на сервере ничего не произойдет, пока не поступит новый HTTP-запрос.
Пример кода выполняется так:
<script type="text/javascript">
var foo = 'bar';
<?php
file_put_contents('foo.txt', ' + foo + ');
?>
var baz = <?php echo 42; ?>;
alert(baz);
</script>
Шаг 1, PHP выполняет весь код между <?php ?>
тегами. Результат таков:
<script type="text/javascript">
var foo = 'bar';
var baz = 42;
alert(baz);
</script>
file_put_contents
Вызов не привести ни к чему, просто написал «+ Foo +» в файл. <?php echo 42; ?>
Вызов привел к выходу «42», который сейчас находится в том месте , где этот код раньше.
Этот результирующий код HTML / JavaScript теперь отправляется клиенту, где он оценивается. alert
Вызов работает, в то время как foo
переменная нигде не используется.
Весь код PHP выполняется на сервере еще до того, как клиент начнет выполнять любой из JavaScript. В ответе не осталось PHP-кода, с которым мог бы взаимодействовать JavaScript.
Чтобы вызвать некоторый код PHP, клиент должен будет отправить новый HTTP-запрос на сервер. Это может произойти с использованием одного из трех возможных методов:
- Ссылка, которая заставляет браузер загрузить новую страницу.
- Отправка формы, которая отправляет данные на сервер и загружает новую страницу.
- AJAX запрос, который является методом Javascript , чтобы сделать регулярный запрос HTTP на сервер (например , 1. и 2. воли), но , не покидая текущую страницу.
Вот вопрос с изложением этих методов более подробно
Вы также можете использовать JavaScript, чтобы браузер открывал новую страницу, используя window.location
или отправляя форму, эмулируя возможности 1. и 2.
window.open
или загрузить страницу с помощью iframe.