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

На форумах дуже часто можна зустріти питання на кшталт:

Ці питання видають новачків і зараз я спробую пояснити чому. А також відповісти як же все-таки це зробити.

Чому питання про передачу змінної з мови в мову - питання новачка? Тому що неможливо це зробити! Мови програмування працюють кожен самостійно. А передача безпосередньо між ними неможлива. Зараз поясню чому.

Якщо подивитися уважно на цей порядок роботи, можна відповісти на питання

Потрібно під час виконання скрипта PHP просто сформувати такий текст, щоб він потім міг виконатися в браузері. Наприклад.

Якщо ви створите файл php з таким вмістом і запустіть його з браузера - ви побачите порожню сторінку і повідомлення alert.

В даному випадку наш php-скрипт формує рядок:

Можна здогадатися, тут справи йдуть важче. Адже php генерує JS, а ось зворотний зв'язок не мається на увазі особливо. Так що хочеш-не хочеш, а доведеться формувати новий запит до сервера, передаючи в ньому дані для скрипта. У нас є два основні методи передачі даних. Реалізація може бути як через синхронні, так і через асинхронні запити. Синхронні викличуть перезавантаження сторінки, а асинхронні використовують Ajax.

PHP-код в файлі index.php отримає дані з GET і сформує суперглобальні масиви.

Це має на увазі використання Ajax. По суті, здійснюється той же, що і в попередньому випадку, але не перезавантажується сторінка браузера. Найпростіше це проілюструвати використовуючи бібліотеку jQuery.

Як бачимо, все ще простіше. Не потрібно застосовувати функцію encodeURIComponent, її застосовує за нас jQuery. Ми описуємо функцію, яка приймає відповідь сервера і складає його в змінну data. Якщо index.php повертає просто значення змінної $ _GET [message], то ми побачимо alert з текстом "Сервер відповів: Hello, server!".

Що при виконанні виведе нам alert з текстом '123'.

Для передачі даних з JS в PHP завжди використовується додатковий запит. Як він здійснюється - справа десята. Наприклад, може формуватися і відправлятися форма. Або відкриватися iframe. Але суть залишається. Розуміючи цю суть, можна перекидати будь-які дані з браузера на сервер і назад досить просто.

Схожі статті