Ваш код розділений на дві повністю окремі частини, сторону сервера та клієнт .
|
---------->
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. У відповіді, з якою JavaScript міг би взаємодіяти, не залишився PHP-код.
Щоб зателефонувати на якийсь PHP-код, клієнту доведеться надіслати новий сервер HTTP на сервер. Це може статися за допомогою одного з трьох можливих методів:
- Посилання, через яке браузер завантажує нову сторінку.
- Подання форми, яка подає дані на сервер та завантажує нову сторінку.
- Запит AJAX , який є технікою Javascript для отримання звичайного HTTP-запиту на сервер (як 1. і 2. буде), але не залишаючи поточну сторінку.
Ось питання, що описує цей метод детальніше
Ви також можете використовувати JavaScript, щоб змусити браузер відкрити нову сторінку за допомогою window.location
або надіслати форму, емулюючи можливості 1. і 2.
window.open
або завантажуючи сторінку, використовуючи iframe.