Як передати змінну

Як передати змінну

Для організації інтерактивного спілкування відвідувача з веб-сайтом (а точніше — браузера з веб-сервером) програмісту необхідно передбачити сценарії обміну даними між ними. Розглянемо кілька нескладних варіантів організації передачі змінних від клієнтського JavaScrip-сценарію до серверного PHP-скрипту і назад.

Вам знадобиться

Початкові знання мов PHP, JavaScript і HTML

Інструкція

  1. Як передати змінну
    На стадії формування сторінки передати змінну із її значенням з php-скрипта в JavaScript-сценарій не представляє складності. PHP-скрипт сам формує HTML-код запитуваної сторінки, в тому числі і що містяться в ньому скрипти. Це означає, що він може вписати в код JavaScript будь-які змінні, які слід передати разом з їх значеннями. Наприклад, цей php-скрипт передасть клієнтського сценарієм змінну з ім’ям «serverTime», що містить поточний час сервера у форматі ЧАС: ХВИЛИНА:

    <? Php

     $ JSvarName = ‘serverTime’;

     $ JSvarValue = date (‘H: i’);

     $ JScode = $ JSvarName .’=»‘.$ JSvarValue .’»;’;

     print ‘<script language=»javascript»>’. $ JScode. ‘alert («А на сервері зараз «+’.$ JSvarName .’);</ script>’

    ?>
  2. Як передати змінну
    Найпростіший варіант передачі імен і значень змінних у зворотному напрямку (від JS-скрипта в браузері клієнта до PHP-скрипту на веб-сервері) може виглядати в HTML-коді сторінки так:

    <script language=»javascript»>

     var now = new Date ();

     var varName = ‘clientTime’;

     var varValue = now.getHours () + «:» + now.getMinutes ();

     window.location.href = ‘http://sa/test2.php?’ + VarName + ‘=’ varValue;

    </ Script>

    Цей сценарій відправить скрипту з ім’ям test2.php ім’я змінної «clientTime» та її значення, що містить поточний час комп’ютера в тому ж форматі ЧАС: ХВИЛИНА. Такий метод передачі даних називають «синхронним» — він призведе до негайної перезавантаження сторінки. Точніше — замість поточної сторінки в браузер буде завантажений результат роботи скрипта test2.php. Код цього php-сценарію може виглядати так:

     if ($ _GET) echo ‘Отримано мінлива’. key ($ _GET ).’=’.$_ GET [key ($ _GET)];

    ?>

    Об’єднати всі три розглянуті частини коду передачі змінних з сервера в браузер і назад в один 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://sa/test2.php?» + VarName + «=» + varValue;

      return false;

    }

    </ Script>

    <br /> <br /> <a href=»javascript:sendData();»> Надіслати дані на сервер </ a>

    У цьому об’єднаному (PHP + JavaScript) сценарії php-код сформує JavaScript-код, «передаючи» йому змінну з ім’ям «serverTime» і значенням, що містить поточний час сервера. При завантаженні сторінки в браузер JavaScript-сценарій покаже повідомлення з цим часом. Потім клацання користувача по посиланню «Відправити дані на сервер» запустить функцію sendData (), яка відправить на сервер GET-запит, що передає php-скрипту ім’я змінної («clientTime») і її значення (час клієнта). Php-скрипт, прочитавши з суперглобальні масиву $ _GET ім’я і значення змінної, надрукує її і почне весь описаний сценарій заново.
  3. Все описане реалізує сценарій «синхронної» передачі даних. Реалізація «асинхронного» методу обміну даними між клієнтськими і серверними скриптами отримала власне ім’я AJAX (Asynchronous Javascript And XML — «асинхронний JavaScript і XML»). Ця тема заслуговує розгляду в окремій статті.