Как настроить смартфоны и ПК. Информационный портал

Вставка php в javascript код web config. Переменные PHP в JavaScript

Почему вопрос о передаче переменной из языка в язык — вопрос новичка? Потому что невозможно это сделать! Языки программирования работают каждый самостоятельно. А передача напрямую между ними невозможна. Сейчас объясню почему.

Дело в том, что PHP и JavaScript связаны лишь условно. PHP работает на сервере, а JavaScript — в браузере.

Напомню алгоритм работы интернета. То есть, что происходит, когда вы запрашиваете адрес..

  • Браузер формирует заголовки запроса, присоединяет к в них какую-то важную информацию о себе и отсылает их на этот адрес.
  • Сервер принимает заголовки и понимает что нужно отдать документ. Он понимает, что запрашивается не документ, а программа. Тогда он запускает эту программу и отдает ей все данные, что получил от браузера.
  • Программа (php-скрипт) запускается, отрабатывает и просто печатает результат своей работы. Результатом работы может быть html-страница, куда включены JavaScript-скрипты. Но мы помним, что в данный момент работает PHP и JavaScript для него ничем не отличается от любых других данных. Просто буковки.
  • Сервер получает то, что напечатала программа. Прикрепляет заголовки ответа и отсылает все это запросившему браузеру.
  • Браузер получает код страницы и отображает его. Догружает нужные файлы (js, css, картинки), применяет их к html-коду. И только теперь включается JavaScript, встроенный в браузер.
  • Если посмотреть внимательно на этот порядок работы, можно ответить на вопрос

    Как передать переменную из PHP в JavaScript?

    Нужно во время выполнения скрипта PHP просто сформировать такой текст, чтобы он потом мог выполниться в браузере. Например.

    Асинхронная передача переменной из JavaScript в PHP

    Это подразумевает использование Ajax. По сути, осуществляется то же, что и в предыдущем случае, но не перезагружается страница браузера. Проще всего это проиллюстрировать используя библиотеку .

    var message = "Hello, server!"; $..php", {message:message}, function(data) { alert("Сервер ответил: "+data); });

    Как видим, все еще проще. Не нужно применять функцию encodeURIComponent, ее применяет за нас jQuery. Мы описываем функцию, которая принимает ответ сервера и складывает его в переменную data. Если index.php возвращает просто значение переменной $_GET, то мы увидим alert с текстом "Сервер ответил: Hello, server!".

    Передача сложных объектов из php в Javascript

    Мы помним, что при генерации JavaScript из php, нужно придерживаться синтаксиса JavaScript. Поэтому нужно перевести данные из представления PHP в представление JavaScript. Проще всего это сделать, воспользовавшись форматом JSON и функцией json_encode() , которая превратит объект или массив php в строку, которая при выполнении движком JavaScript, даст объект JavaScript.

    Тут можно начать путаться. Но ничего страшного нет. Достаточно помнить последовательность. Сперва выполняется php, затем — JavaScript. После выполнения php получится:

    var obj={"test":"123","key":"value"}; alert(obj.test);

    Что при выполнении выведет нам alert с текстом "123".

    Итого

    Нужно помнить что php генерирует JS, поэтому передавать из него данные довольно просто. Нужно формировать JS так же, как формируется html. С соблюдением синтаксиса JavaScript.

    Для передачи данных из JS в PHP всегда используется дополнительный запрос. Как он осуществляется — дело десятое. Например, может формироваться и отправляться форма. Или открываться iframe. Но суть остается. Понимая эту суть, можно перекидывать любые данные из браузера на сервер и обратно довольно просто.

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

    Итак, есть браузер. Это программа, которая умеет 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-файлы устраивают разработчика на 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. Кавычки здесь не играют роли (можете вставить любые), а по желанию можно внедрить переменные для вывода:

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

    Лучшие статьи по теме