Как передать переменную
Содержание:- Организация передачи данных между клиентским и серверным скриптами
- Передача переменных из PHP-скрипта в JavaScript-сценарий
- Передача переменных из JavaScript-сценария в PHP-скрипт
- Объединение PHP и JavaScript в одном сценарии
- Асинхронная передача данных
Организация передачи данных между клиентским и серверным скриптами
Для организации интерактивного общения посетителя с веб-сайтом необходимо предусмотреть сценарии обмена данными между браузером и веб-сервером. Рассмотрим несколько простых вариантов передачи переменных от клиентского JavaScript-сценария к серверному PHP-скрипту и обратно.
Передача переменных из PHP-скрипта в JavaScript-сценарий
На стадии формирования страницы можно легко передать переменную с её значением из PHP-скрипта в JavaScript-сценарий. PHP-скрипт формирует HTML-код страницы, включая в него скрипты. Таким образом, он может вставить любые переменные JavaScript в код, чтобы передать их со значениями. Например:
<?php
$JSvarName = 'serverTime';
$JSvarValue = date('H:i');
$JScode = $JSvarName.'="'.$JSvarValue.'";';
print '<script language="javascript">'.$JScode.'alert("А на сервере сейчас "+'.$JSvarName.');</script>';
?>
Передача переменных из JavaScript-сценария в PHP-скрипт
Простейший вариант передачи имен и значений переменных из JavaScript-сценария в PHP-скрипт на веб-сервере может выглядеть следующим образом:
<script language="javascript">
var now = new Date();
var varName = 'clientTime';
var varValue = now.getHours() + ":" + now.getMinutes();
window.location.href = 'http://example.com/test2.php?' + varName + '=' + varValue;
</script>
Этот сценарий отправит на скрипт test2.php переменную с именем "clientTime" и её значение, содержащее текущее время компьютера в формате ЧАС:МИНУТА. Такой метод передачи данных называется «синхронным» и приводит к немедленной перезагрузке страницы, загружая результат работы скрипта test2.php.
Объединение PHP и JavaScript в одном сценарии
Все рассмотренные части кода передачи переменных с сервера в браузер и обратно можно объединить в один PHP-файл:
<?php
if($_GET) echo 'Получена переменная '.key($_GET).'='.$_GET[key($_GET)];
$JSvarName = 'serverTime';
$JSvarValue = date('H:i');
$JScode = $JSvarName.'="'.$JSvarValue.'";';
print '<script language="javascript">'.$JScode.'alert("А на сервере сейчас "+'.$JSvarName.');</script>';
?>
<script language="javascript">
function sendData() {
var now = new Date();
var varName = 'clientTime';
var varValue = now.getHours() + ":" + now.getMinutes();
window.location.href = "http://example.com/test2.php?" + varName + "=" + varValue;
return false;
}
</script>
<br /><br />
<a href="javascript:sendData();">Отправить данные на сервер</a>
В этом объединенном сценарии PHP-код формирует JavaScript-код, передавая ему переменную с именем "serverTime" и значением, содержащим текущее время сервера. При загрузке страницы в браузер JavaScript-сценарий показывает сообщение с этим временем. При клике пользователя на ссылке "Отправить данные на сервер" запускается функция sendData(), которая отправляет GET-запрос на сервер, передавая имя переменной ("clientTime") и её значение (время клиента). PHP-скрипт считывает имя и значение переменной из суперглобального массива $_GET, печатает их и начинает весь описанный сценарий заново.
Асинхронная передача данных
Описанный выше метод реализует «синхронную» передачу данных. Если вам необходима асинхронная передача данных между клиентскими и серверными скриптами, рекомендуется использовать AJAX (Asynchronous JavaScript and XML). Эта тема заслуживает отдельного рассмотрения, которое вы можете найти в отдельной статье.