Почему вопрос о передаче переменной из языка в язык — вопрос новичка? Потому что невозможно это сделать! Языки программирования работают каждый самостоятельно. А передача напрямую между ними невозможна. Сейчас объясню почему.
Дело в том, что PHP и JavaScript связаны лишь условно. PHP работает на сервере, а 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-кода (если же нет, то в конце заметки есть простой пример как решить и эту проблему). Но что касается красоты, то этот вариант не самый изящный. Хорошо бы держать мух и котлеты раздельно.
AddType application/x-httpd-php .js AddHandler x-httpd-php5 .js
Pro et Contra: что нам это дает? Pro- Вы можете включать PHP-код в файлы с расширением.js и он автоматически выполнится при клиентском обращении к JavaScript-файлу.
- Вы можете держать такие «гибридные» скрипты в отдельной папке - достаточно в эту папку поместить описанный выше файл.htaccess.
- Если вы хотите держать все JavaScript-файлы в одном месте (статические и гибридные), то можете зарегистрировать обработчик файлов с произвольным расширением, например, .js2 - достаточно немного модифицировать текст.htaccess.
- Вы можете разделить статические HTML-страницы, шаблоны и JavaScript-файлы.
- Теоретически это вызовет минимальную дополнительную нагрузку на работу сервера, но, учитывая вариации с отдельными папками или расширениями файлов, польза кажется превосходящей.
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. Кавычки здесь не играют роли (можете вставить любые), а по желанию можно внедрить переменные для вывода:
Весьма удобный способ для реализации ваших идей.