Передача змінних з php в javascript

значення якої треба передати в яваскрипт, щоб отримати

Ми просто пишемо

Тобто, фактично, ми просто сформували нашим PHP скриптом якийсь текст, який виглядає, як потрібний нам код на яваскрипт. Або, з іншого боку, ми писали свій яваскрипт, в потрібних місцях вставляючи висновок змінних з PHP.
Щоб не збожеволіти від різноманітних лапок, настійно рекомендується яваскрипт виводити не весь за допомогою echo, а саме так, як написано тут - закривши тег PHP і відкриваючи їх тільки там, де потрібно вивести змінну.

Як передати змінну з яваскрипт в PHP?
Точно так же, як і будь-які інші дані - надіславши запит на сервер.
Але треба чітко розуміти, що під час виконання php скрипта отримати що-небудь з яваскрипт, зрозуміло, неможливо. Передати можна буде тільки при наступному запиті. І обробляти його буде вже інший PHP скрипт.
Якщо треба але події onClick рбратіться до бази даних, то слід пам'ятати, що вона знаходиться на сервері. Тобто, треба запитувати сервер, який запустить PHP скрипт, який звернеться до бази, отримає від неї відповідь і передасть його в браузер.

Все вищевикладене не суперечить, зрозуміло, модною технології асинхронного спілкування браузера з сервером. Всі методи залишилися ті ж, просто спілкування з сервером виконує не сам браузер, а програма на яваскрипт.
Детальніше можна почитати на ресурсах, присвячених Яваскрипт. З точки зору PHP запити за технологією AJAX нічим не відрізняються від звичайних.

Що поганого в такому підході? Погано те що JS-код генерується "на льоту", тобто якщо він згенерує не так як ми того очікували, вийде помилка або вобще битий JS-код, який важко налагоджувати, особливо якщо коду багато. На додаток, ми отримуємо купу коду який засмічує наш PHP-скрипт (або шаблон), якщо JS-скрипт використовується багаторазово - його доводиться або копіювати або інклуд що також ускладнює настройку та підтримку продукту. Крім того зайва інформація (при кожному запиті) пожирає трафік, наприклад в форумі phpBB на кожну сторінку генерується 3-5 кб JS-коду.

Лишається всіх цих проблем можна виносом всього JS-коду в окремий статичний * .js файл. Тоді як же передавати йому динамічні дані? Дуже просто - через приховані елементи форм. У більшості випадків JS використовують для тієї чи іншої роботи з

так що вона у нас є на сторінці, але навіть якщо й ні, то до елементів можна звернутися через getElementById. Як же буде виглядати наш найпростіший приклад в цьому випадку:

а в PHP скрипт зробимо

Тепер раз налагоджений JS-скрипт буде 1 раз довантажуватися клієнту і не буде викликати різних помилок викликаних тим що PHP вставив не те значення (наприклад Notice про невстановленої змінної $ var). До того ж JS-код став reusable з будь-якого скрипта, залишилося тільки в тілі документа передати йому інше значення.
Таким же способом можна і передавати більш складні змінні, наприклад масиви пов'язаних даних. Для прикладу візьмемо випадок коли потрібно передати масив ID товарів які користувач вибирає через checkbox кнопки і JS-скрипт повинен тут же перерахувати наприклад вартість вибраних, помноживши її на кількість кожного обраного товару.

У нас вийшов статичний reusable JS для підрахунку ціни, який працює зі зв'язаним типом даних з PHP: за всіма зазначеними ID множимо кількість на ціну і отримуємо суму.

Схожі статті