Передать переменную из php в javascript. Передача переменных при помощи метода GET
Почему вопрос о передаче переменной из языка в язык — вопрос новичка? Потому что невозможно это сделать! Языки программирования работают каждый самостоятельно. А передача напрямую между ними невозможна. Сейчас объясню почему.
Дело в том, что 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. Но суть остается. Понимая эту суть, можно перекидывать любые данные из браузера на сервер и обратно довольно просто.
8 ответов
HTML/HTTP является апатридом, другими словами, то, что вы делали/видели на предыдущей странице, полностью не связано с текущей страницей. За исключением случаев, когда вы используете что-то вроде сеансов, файлов cookie или GET/POST. Сессии и файлы cookie довольно просты в использовании, причем сеанс гораздо безопаснее, чем файлы cookie. Более безопасный, но не полностью безопасный.
сессия:
//On page 1 $_SESSION["varname"] = $var_value; //On page 2 $var_value = $_SESSION["varname"];
Не забудьте запустить session_start(); на обеих этих страницах, прежде чем пытаться получить доступ к массиву $_SESSION , а также до того, как какой-либо вывод будет отправлен в браузер.
//One page 1 $_COOKIE["varname"] = $var_value; //On page 2 $var_value = $_COOKIE["varname"];
Большая разница между сеансами и куки файлами заключается в том, что значение переменной будет храниться на сервере, если вы используете сеансы и на клиенте, если вы используете файлы cookie. Я не могу придумать какую-либо серьезную причину использовать файлы cookie вместо сеансов, за исключением случаев, когда вы хотите, чтобы данные сохранялись между сеансами, но даже тогда, возможно, лучше сохранить их в БД и получить их на основе имени пользователя или идентификатора.
GET и POST