Выполнение PHP-кода в файлах JavaScript. Как использовать переменные PHP в JavaScript

В большинстве веб-приложений статические JavaScript-файлы устраивают разработчика на 100%. Однако же иногда бывает лучшим решением подключить PHP и сгенерировать содержимое JS-файла «на лету» (например, получить актуальные цены на продукты из БД и передать их JavaScript-программе для валидации формы заказа). Как же это сделать?

Способ первый: простой Конечно же, самое простое решение состоит в том, чтобы включить код PHP внутрь секции вашего HTML-шаблона, поскольку есть шансы, что у него будет расширение.php.

var jsVar = "";
Даже если расширение шаблона.htm или.html, то в большинстве случаев веб-сервер настроен так, чтобы понимать включения PHP-кода (если же нет, то в конце заметки есть простой пример как решить и эту проблему). Но что касается красоты, то этот вариант не самый изящный. Хорошо бы держать мух и котлеты раздельно.

Способ второй: красивый Второй вариант решения - настроить веб-сервер так, чтобы он парсил JavaScript-файлы на предмет выполнения PHP-кода. Достаточно создать в нужной папке файл.htaccess или открыть уже существующий и добавить в него следующие строки:

AddType application/x-httpd-php .js AddHandler x-httpd-php5 .js

Pro et Contra: что нам это дает? Pro
  • Вы можете включать PHP-код в файлы с расширением.js и он автоматически выполнится при клиентском обращении к JavaScript-файлу.
  • Вы можете держать такие «гибридные» скрипты в отдельной папке - достаточно в эту папку поместить описанный выше файл.htaccess.
  • Если вы хотите держать все JavaScript-файлы в одном месте (статические и гибридные), то можете зарегистрировать обработчик файлов с произвольным расширением, например, .js2 - достаточно немного модифицировать текст.htaccess.
  • Вы можете разделить статические HTML-страницы, шаблоны и JavaScript-файлы.
Contra
  • Теоретически это вызовет минимальную дополнительную нагрузку на работу сервера, но, учитывая вариации с отдельными папками или расширениями файлов, польза кажется превосходящей.
Дополнение Для того, чтобы веб-сервер парсил файлы.htm и.html и выполнял включенный в них PHP-код, нужно добавить в.htaccess следующие строки:

AddType application/x-httpd-php .htm .html AddHandler x-httpd-php5 .htm .html SetHandler application/x-httpd-php
Замечания, дополнения и обмен опытом приветствуются.

ВЫВОДЫ Довольно странно, что небольшая заметка, которая фактически предлагает всего-навсего сниппет для быстрой реализации конкретной практической задачи вызвала такое бурное обсуждение, по большей части похожее на попытки блеснуть теорией. Знаменитое хабра-сообщество в данном случае самоотверженно линчевало те идеи, которые в заметке в принципе не затрагивались. Хотя надо отдать должное - несколько здоровых мыслей все таки есть. И кроме того - нет «никакой другой роскоши, кроме роскоши человеческого общения» (если верить Экзюпери)))) .

Когда вы разрабатываете свой модуль, то иногда прибегаете к помощи верстки (HTML и CSS) и дополнительным скриптам.

Все это можно подключать отдельно – что-то в теле страницы, что-то в отдельных файлах. Но некоторые дополнения лучше вставлять непосредственно в сам PHP-файл.

Сегодня я покажу два варианта, как можно вставить HTML, CSS или JavaScript в код PHP.

Первый вариант вставки элементов в PHP-код

Я думаю, что если вы хоть немного знакомы с PHP, то знаете, что такое «echo » (тег, с помощью которого вы можете вывести сообщение на экран).

Вот с помощью него и можно вывести один из перечисленных ранее кодов. Пример:

На что здесь стоит обратить внимание ? Кавычки . Если вы используете внешние кавычки в виде " ", то внутренние кавычки элементов должны быть " " и наоборот, иначе вы получите ошибку. Если вы принципиально хотите использовать одинаковые и внешние, и внутренние кавычки, то во внутренних ставьте знак экранизации:

В этом случае все будет работать корректно.

Второй вариант вставки элементов в PHP-код

Этот вариант мне нравится куда больше, чем первый. Здесь мы будем также использовать «echo », как и в предыдущем варианте, но добавим еще элемент «HTML »:

Сюда вы можете вставлять любой элемент, будь то HTML-код или же JavaScript. Кавычки здесь не играют роли (можете вставить любые), а по желанию можно внедрить переменные для вывода:

Весьма удобный способ для реализации ваших идей.

Это довольно частый вопрос, который возникает в форумах. В принципе, любой человек способен самотоятельно разобраться. Но если есть вопрос то попробуем тут разобраться с ним.

Итак, есть браузер. Это программа, которая умеет html-файл показывать красиво на экране. Файл этот может быть взят браузером только из 2-х мест: из Интернета и с локального компьютера (либо сети).

Если браузер берет файлы с диска локального компьютера то этот файл может кто угодно модифицировать. Например, можно создать программу на Си или Паскале, которая запишет в html файл 1000 раз слово "привет". А потом браузер возмет файл и отобразит его на экране пользователя. Заметьте, браузеру по барабану, откуда файл возник. Его это не касается, он получает конечный html файл.

Если файл появляется из Интернета то браузер часто не знает о файле совсем ничего: ни даты, ни размера (до полного скачивания), ни настоящего имени. Если данный файл на сервере будет результатом работы какой либо программы, то данное обстоятельство тоже ником образом не заденет браузер (ему опять будет по барабану). На таком свойсте основаны скрипт-языки. Если пометить в веб-каталог на сервере php-файл, то браузер получит не его самого, а только результат работы PHP, выполнившего php-файл.
Что такое JavaScript (JS)? Это тот же html. Другими словами это некоторый набор дополнительных тегов и ничего более. Если в какой либо работающей ПХП-программе заменить echo "Введите логин" на echo "document.write("Введите логин");"; , то данная операция никак не скажется на PHP программу. В начале у вас в файле храниться echo . При обращении пользователя к странице данная команда выполняется PHP, который отдает браузеру результат работы. Т.е. ту строку, которая была в echo . Если в строке был JS-код, получиться, что браузер получит его. Итак, что такое JS? Это, как мы выяснили, некий набор дополнительного к чистому html коду текст, который поступает в html-файле в браузер и там выполняется. Вот оно, что никто не желает понимать - PHP работает на сервере, а JS только в браузере. А что у нас в браузере? HTML код. И браузеру все равно, откуда он взялся. Браузер берет html файл и отображает его на экране, вылняя теги, а еще попутно JS-код.

Чтоже нужно, чтобы передеать в JS переменную из PHP? Прежде всего понимание, что вначале выполниться PHP, который создает html-страницу (а попутно может и JS код создать). Представьте, был у нас такой файл:

и теперь данную формулу считает PHP, а потом вставляет результат в нужное место html страницы. А то, что в результате получится объявление переменной JS программы, то просто положительный побочный эффект. PHP не волнует, что делает программа и зачем она считала сумму 2 и 3.


»

Когда вы разрабатываете свой модуль, то иногда прибегаете к помощи верстки (HTML и CSS) и дополнительным скриптам.

Все это можно подключать отдельно – что-то в теле страницы, что-то в отдельных файлах. Но некоторые дополнения лучше вставлять непосредственно в сам PHP-файл.

Сегодня я покажу два варианта, как можно вставить HTML, CSS или JavaScript в код PHP.

Первый вариант вставки элементов в PHP-код

Я думаю, что если вы хоть немного знакомы с PHP, то знаете, что такое «echo » (тег, с помощью которого вы можете вывести сообщение на экран).

Вот с помощью него и можно вывести один из перечисленных ранее кодов. Пример:

На что здесь стоит обратить внимание ? Кавычки . Если вы используете внешние кавычки в виде " ", то внутренние кавычки элементов должны быть " " и наоборот, иначе вы получите ошибку. Если вы принципиально хотите использовать одинаковые и внешние, и внутренние кавычки, то во внутренних ставьте знак экранизации:

В этом случае все будет работать корректно.

Второй вариант вставки элементов в PHP-код

Этот вариант мне нравится куда больше, чем первый. Здесь мы будем также использовать «echo », как и в предыдущем варианте, но добавим еще элемент «HTML »:

Сюда вы можете вставлять любой элемент, будь то HTML-код или же JavaScript. Кавычки здесь не играют роли (можете вставить любые), а по желанию можно внедрить переменные для вывода:

Весьма удобный способ для реализации ваших идей.




Top