Можно ли поместить php код в javascript. Как записать переменную из PHP в JavaScript? Pro et Contra: что нам это дает

Для Windows 31.03.2019

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

Итак, есть браузер. Это программа, которая умеет 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.


»

Инструкция

Скрипты JavaScript - это сценарии, которые выполняется не на сервере, а непосредственно в браузере, поэтому их называют «клиентскими». Если скрипт попал к вам в виде отдельного файла с расширением "js", то подключить его к странице надо добавлением в заголовочную часть ее HTML-кода соответствующего тега со ссылкой на этот файл. Заголовочная - это та часть, которая начинается с тега и завершается тегом . Поэтому вы не ошибетесь, если найдете в коде страницы закрывающий тег и поместите перед ним такую ссылку на JavaScript-файл:Здесь в атрибуте src указано имя файла "script.js" - его вам надо заменить на имя вашего js-файла. Чтобы браузер мог найти и прочесть этот файл, его нужно поместить в ту же папку сервера, где лежит и сама страница. Если вы закачаете его в другое место - укажите соответствующий адрес вместе с именем файла в атрибуте src.Если JavaScript у вас есть не в отдельном файле, а просто в виде текста, начинающегося с тега

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

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

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

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

Сюда вы можете вставлять любой элемент, будь то HTML-код или же 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
Замечания, дополнения и обмен опытом приветствуются.

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

Рекомендуем почитать

Наверх