Передать переменную php в js файл

Обновлено: 02.07.2024

В этой небольшой статье мы рассмотрим с вами один интересный момент, касающийся передачи значений переменных.

Иногда возникает необходимость использовать значение PHP-переменной в JavaScript-сценарии, либо наоборот: есть JavaScript-переменная, значение которой нам нужно использовать в PHP-скрипте.

В этом уроке мы рассмотрим простые примеры, которые позволят вам понять общий механизм того, как это можно реализовать.

Для определенности, предлагаю вам создать на локальном компьютере хост с именем php_js и разместить там файл index.php, в котором мы и будем рассматривать наши примеры.

Каркасом файла index.php будет простая HTML-разметка:

Для большей наглядности весь код (включая JavaScript) мы будем писать внутри тэгов body.

1. Передача значения PHP-переменной в JavaScript

Давайте напишем такой код в тэге body:

Итак, у нас есть PHP-переменная с именем name и значением Юрий, и наша задача состоит в том, чтобы это значение вывести на экран, но не средствами PHP, а с помощью JavaScript.

Хостинг

Для этого мы открываем как обычно блок JavaScript-кода и внутри него объявляем переменную с произвольным именем (в нашем случае - userName). Теперь мы этой переменной присваиваем в качестве значения результат работы оператора echo применительно к переменной name.

Как вы видите, мы делаем это в блоке PHP-кода, который открываем и закрываем в пределах одинарных кавычек, обрамляющих строковое значение переменной userName в JavaScript-сценарии.

Таким образом, мы с помощью языка PHP формируем синтаксически верный код JavaScript, который будет корректно выполнен.

В результате выполнения этой строки в переменную userName попадет значение Юрий.

Вот и все. Значение PHP-переменной name было передано в JavaScript-переменную userName.

Теперь нам нужно только убедиться, что в нашей JavaScript-переменной userName хранится ожидаемое значение. Для этого мы выводим значение данной переменной на экран с помощью document.write.


В исходном коде сформированной страницы мы увидим при этом следующую картину:


На этом здесь все, и мы можем двигаться дальше.

2. Передача значения JavaScript-переменной в PHP (метод GET)

Здесь, как вы понимаете, ситуация у нас обратная. В наличии есть JavaScript-переменная, и ее значение нужно каким-то образом передать в PHP-сценарий.

Понятно, что эта задача несколько сложнее, ведь если в первом случае (передача значения PHP-переменной в JavaScript) у нас уже была PHP-переменная, значение которой мы просто вывели внутри JavaScript-кода, то здесь такой вариант не пройдет.

Ведь PHP-скрипт ничего не знает о том, что у нас создана некая JavaScript-переменная. И не узнает он об этом до тех пор, пока мы не отправим серверу GET или POST-запрос, в котором будет фигурировать значение JavaScript-переменной.

Вот тогда, уже на следующем запросе, мы сможем получить доступ к значению этой JavaScript-переменной из PHP-сценария.

Под уже существующим кодом допишем следующее:

Начало у нас похожее: в блоке JavaScript-кода мы объявляем переменную с именем userName3 и значением Александр.

Далее мы открываем тэг параграфа для того, чтобы внутри него вывелось значение JavaScript-переменной.

После этого переходим к PHP-коду. Мы видим, что в ветке if проверяется существование в глобальном массиве $_POST элемента с индексом u_name.

Если данный элемент будет найден, то он будет выведен на экран и будет закрыт тэг параграфа для всего предложения.

В случае отстутствия данного элемента в массиве $_POST управление передается ветке else.

Для этого мы выводим на страницу открывающий и закрывающий блоки JavaScript-кода с помощью опрератора echo, и внутри них формируем синтаксически верный JavaScript-код.

Наша задача сводится к тому, чтобы, используя команду вывода document.write в JavaScript, вывести на страницу обычную HTML-форму и подставить в единственное ее текстовое поле с именем u_name значение, которое хранится в переменной userName3 (Александр).

Самое сложное здесь - не запутаться в кавычках и их экранировании.

Именно поэтому перед написанием подобных скриптов я рекомендую вам сперва создать отдельный файл и написать в нем чистый JavaScript-код, который бы выводил форму и подставлял в поле значение переменной userName3.

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

Именно это мы и делаем в ветке else. Обратите внимание, что текст для вывода (предназначенный для оператора echo) заключен в двойные кавычки. Соответственно, для конструкции document.write мы используем одинарные кавычки.

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

Если сейчас обратиться к странице index.php, то результат будет следующий:


Как вы видите, после фразы "Значение JavaScript-переменной:" идет пустота, т.е. пока еще PHP-сценарий не получил значение JavaScript-переменной userName3. И это понятно - ведь еще не было запроса к серверу, в котором могла быть передана эта информация.

При этом ниже в форме у нас находится слово Александр - как раз значение JavaScript-переменной userName3.

Мы вставили его сюда как раз для того, чтобы отправлить форму и передать значение этой переменной методом POST нашему текущему скрипту index.php (если атрибут action отсутствует, то данные будут переданы текущему скрипту).

После нажатия на кнопку отправки мы увидим такую картину:


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

Ну что ж, с этой задачей мы тоже справились - значение JavaScript-переменной userName3 мы передали в PHP-скрипт и вывели его на экран из массива $_POST.

На этом данную небольшую статью я завершаю. Очень надеюсь, что она поможет вам понять базовые принципы передачи значений переменных из JavaScript в PHP и обратно.

С уважением, Дмитрий Науменко.

P.S. Присмотритесь к премиум-урокам по различным аспектам сайтостроения, включая JavaScript, jQuery и Ajax, а также к бесплатному курсу по созданию своей CMS-системы на PHP с нуля. Все это поможет вам быстрее и проще освоить практические навыки веб-программирования:

Понравился материал и хотите отблагодарить?
Просто поделитесь с друзьями и коллегами!

Смотрите также:

PHP: Получение информации об объекте или классе, методах, свойствах и наследовании

CodeIgniter: жив или мертв?

Функции обратного вызова, анонимные функции и механизм замыканий

Применение функции к каждому элементу массива

Слияние массивов. Преобразование массива в строку

Деструктор и копирование объектов с помощью метода __clone()

Эволюция веб-разработчика или Почему фреймворк - это хорошо?

Магические методы в PHP или методы-перехватчики (сеттеры, геттеры и др.)

PHP: Удаление элементов массива

Ключевое слово final (завершенные классы и методы в PHP)

50 классных сервисов, программ и сайтов для веб-разработчиков

Поиск по сайту

Фреймворк Yii2: первая практика

Фреймворк Yii2: теория и первая практика

Овладейте начальными знаниями и навыками по работе в фреймворке Yii2, которые необходимы любому веб-разработчику!

Дизайн лендинга

Веб-дизайн: практический курс создания лендинга

Создавайте дизайн любых сайтов - для себя и на заказ!

В Гармонии с Кодом

Если вы хотите создать сайт своими руками, то вы оказались в нужном месте. Здесь вы найдете обучающие видеокурсы, а также множество видеоуроков и статей по веб-разработке и созданию сайтов.

Мы представим способ передачи переменной PHP в JavaScript с помощью AJAX. Этот метод запрашивает данные с сервера PHP и запускается на клиентском компьютере.

Мы также продемонстрируем другой метод передачи переменной PHP в JavaScript путем экранирования PHP в JavaScript. Мы пишем JavaScript после сценариев PHP, чтобы избежать PHP.

Мы покажем вам еще один пример передачи переменной PHP в JavaScript с использованием короткого тега echo в JavaScript как <?=$var?> , Где <?=$var?> - это переменная PHP.

Используйте AJAX для передачи переменной PHP в JavaScript

Используйте JavaScript, чтобы избежать сценариев PHP для передачи переменной PHP в JavaScript

Мы можем использовать JavaScript после тегов PHP, чтобы избежать сценариев PHP. Мы можем создать переменную PHP в скрипте PH P. Затем мы можем написать JavaScript, чтобы избежать написанного выше PHP и передать переменную внутри кода JavaScript. Внутри JavaScript мы можем использовать тег PHP, чтобы отобразить переменную PHP, назначив ее переменной JavaScript.

Например, присвоить значение Metallica переменной $var внутри тегов PHP. Напишите тег скрипт и внутри него напишите тег PHP. Внутри тега PHP отобразите переменную JavaScript jsvar . Назначьте переменную PHP $var на jsvar . Не забудьте заключить в кавычку $var и точку с запятой после нее. Закройте тег PHP и зарегистрируйте значение jsvar с помощью функции console.log() . Закройте тег скрипт . В приведенном ниже примере мы зарегистрировали переменную PHP $var в консоли с помощью JavaScript. Мы видим вывод в консоли веб-страницы.

Используйте короткий эхо-тег PHP <? =?> Внутри JavaScript для передачи переменной PHP в JavaScript

Мы можем использовать короткий эхо-тег PHP внутри JavaScript, чтобы передать переменную PHP в JavaScript. Мы можем использовать короткий PHP-тег echo, чтобы избавиться от хлопот с написанием PHP-тега и оператора echo . Это короткий метод. Этот метод очень похож на второй метод с точки зрения концепции и исполнения.

Например, присвойте значение Megadeth переменной $var внутри тегов PHP. Откройте тег скрипт и создайте переменную JavaScript jsvar . Запишите сокращенный эхо-тег $var Как значение переменной jsvar . Зарегистрируйте переменную с помощью функции console.log() . Мы можем просмотреть вывод скрипта в консоли веб-страницы.

От автора: в данное время практически каждый сайт использует язык JavaScript и различные библиотеки написанные на нем, к примеру jQuery. И очень часто возникает задача в передаче значений переменных из JavaScript в PHP. Поэтому в данном уроке мы с Вами рассмотрим способы, при помощи которых, можно решить данную задачу. Хочу обратить внимание, что передать можно только значение, а не саму переменную, определенного языка.

скачать исходники
скачать урок

1. Постановка задачи

Для начала рассмотрим сайт, на примере которого, мы будем изучать тему сегодняшнего урока:



Бесплатный курс по PHP программированию

Освойте курс и узнайте, как создать динамичный сайт на PHP и MySQL с полного нуля, используя модель MVC

В курсе 39 уроков | 15 часов видео | исходники для каждого урока

Это очень простой сайт, состоящий из двух страниц: главная страница, выводит список статей хранящихся в базе данных, и страница полного просмотра текста статьи. Исходный код данного сайта, я здесь приводить не буду, так как он будет доступен Вам в исходниках к этому уроку. Рассмотрим только назначение главных файлов:

index.php – подключает необходимые файлы и выводит главную страницу на экран;

view_text.php – выводит страницу просмотра полного текста статьи;

config.php – содержит настройки для подключения к базе данных и собственной само подключение;

funcntions.php – содержит две функции по получению всех статей из базы данных и получению одной конкретной статьи по ее идентификатору;

js/script – пустой файл, в котором мы будем писать скрипты на языке JavaScript;

css/style.css – файл стилей для сайта.

Теперь давайте рассмотрим способы передачи значений переменных из JavaScript в PHP.

2. Передача значения переменных из PHP в JavaScript

Это пожалуй самый простой способ. Давайте вспомним, где содержится интерпретатор языка JavaScript?
Интерпретатор языка JavaScript, в содержится в браузере. То есть код JavaScript обрабатывается непосредственно браузером, когда страница передается ему от сервера.

Теперь вспомним, где интерпретируется язык PHP? Интерпретатор языка PHP содержится на сервере. При этом PHP интерпретируется до того как страница попадет в браузер, пользователя. Значит, для передачи значения переменной языка PHP в язык JavaScript, достаточно между тегами script вывести значение этой переменной. К примеру, создадим переменную в конфигурационном файле config.php (переменная PHP):

Затем, в файле index.php передадим ее значение в JavaScript (перед подключением файла js/script.js):

Теперь в файле js/script.js используем значение данной переменной. А именно, создадим блок с классом for_button, в блоке

с классом content и как содержимое добавим в него значение переменной. Для этого используем библиотеку jQuery и ее метод prepend, который добавляет html код в выбранный блок.

И добавим несколько правил css для нового созданного блока в файл css/style.css:

Теперь давайте посмотрим, что у нас получилось:


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

3. Передача значений переменных из JavaScript в PHP методом GET

Передача значений переменных языка JavaScript в PHP, задача несколько сложнее, так как требуется передать значение переменной на сервер в интерпретатор языка PHP. Это можно реализовать как методом GET (через адресную строку), так и методом POST. Метод GET предусматривает передачу данных через адресную строку. Поэтому перейдем в файл js/script.js и добавим следующий код:

Обратите внимание, что значение атрибута value я оставил пустым. Мы его установим, используя JavaScript. А именно, создадим переменную search и, используя jQquery, присвоим ее значение атрибуту value текстовому полю:


При этом, значение переменной search будет передано в сценарий языка PHP. Обратите внимание, что обработчиком формы выступает файл view_text.php. Значит, в него нужно добавить код, который обработает данные пришедшие методом POST. Поэтому откроем данный файл и добавим следующий код:

Затем в одном из блоков выведем значение переменной $str:

При этом на экран мы отобразим данные, которые пришли на данную страницу из метода POST, а значит из скрипта написанного на языке JavaScript. Дайте отправим данные формы и посмотрим, что получилось:


5. Асинхронный способ передачи значений переменных из JavaScript в PHP и наоборот

До сих пор, мы с Вами рассматривали так называемый синхронный способ передачи данных на сервер. То есть, когда при передаче данных мы с Вами видели перезагрузку страницы в браузере, так образом на любое наше действие браузер отправляет данные на сервер, что сопровождается обновлением страницы.

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

Для работы с AJAX используем библиотеку jQuery и ее метод ajax, со следующими параметрами:

Пример JSON строки, описывающей объект с двумя свойствами: firstname и lastname:

data – данные которые отправляются на сервер. Обратите внимание, что на сервер мы отправим объект ob, который представим в виде JSON строки, при помощи функции JSON.stringify(ob);

success – описываем функцию которая будет выполнена в результате успешного запроса к серверу. Параметр html, данной функции – это ответ от сервера. Который должен обязательно прийти в формате JSON, в соответствии с настройкой dataType, и который будет конвертирован в объект (то есть в html содержится ответ от сервера в виде объекта). В теле данной функции, выведем на экран заголовок статьи (условимся, что ответ от сервера – это будет массив данных о конкретной статье). Для этого используем метод prependTo(), и вставим данные в блок с классом for_content. При этом добавим анимационный эффект появления данных на экране, при помощи метода fadeIn() (метод hide() необходим, что бы мгновенно скрыть выводимый на экран блок, для того что бы в последствии его можно было плавно показать на экран, используя метод fadeIn()).

Теперь, так как мы передаем данные в файл index.php, в него необходимо добавить код, который обработает эти данные:

То есть, проверяем, если пришли данные методом POST, то сохраняем их в переменную $param. При этом предварительно обработав их функцией json_decode(). Которая декодирует JSON строку и возвращает объект, хранящийся в ней. Таким образом в переменной $param содержится объект. У которого есть свойство $id, его мы используем в качестве идентификатора статьи для функции get_text(), которая вернет массив данных статьи по ее идентификатору. Этот массив мы сохраним в переменную $row. Затем конвертируем его в JSON строку и выводим на экран, используя функцию echo. Так как мы обращаемся к данному файлу асинхронно, и данный участок кода сработает, когда придут данные методом POST (а в нашем случае, они придут только асинхронно). Поэтому весь вывод на экран и будет являться ответом от сервера, который попадет в переменную html. Далее что бы в ответ от сервера, не попало лишних данных, мы выполняем exit().

Вот и все, можно проверять работу нашего скрипта:


Как Вы видите, Все успешно работает. Таким образом, мы с Вами передали значение переменной JavaScript в PHP и наоборот, используя асинхронные запросы к серверу.

На этом давайте прощаться. Всего Вам доброго и удачного кодирования.


Бесплатный курс по PHP программированию

Освойте курс и узнайте, как создать динамичный сайт на PHP и MySQL с полного нуля, используя модель MVC

code-php

Всеми привет. Если вы мало-мальски делаете проекты для web, то наверняка сталкивались с задачей передать значение переменной из PHP в JavaScript. На первый взгляд нет абсолютно никаких трудностей, чтобы это сделать, если у вас небольшой кусок JS кода и вы его встраиваете напрямую в HTML. Давайте посмотрим.

< ?php $a = 5; // присваиваем переменной 5 ?>

Вы можете проверить, таким образом можно передать PHP переменную в JS, Вернее ее значение. Но такой способ не сработает, если JS код вынесен в отдельный файл. PHP переменные в этом файле работать не будут.

error-js

Передать переменную из PHP в отдельный JavaScript файл

Способов это сделать на самом деле несколько. Я покажу один из самых простых. Принцип такой: мы создаем на странице элемент, например div с любым классом и дата-атрибутом, в который и помещаем PHP переменную. Затем в JavaScript обращаемся к этому атрибуту и получаем его значение. Я думаю вы уже поняли как это работает. Давайте разберемся на примере.

var dataPphp = document.querySelector('.data-php').getAttribute('data-attr'); alert(dataPhp);

Более короткий вариант с jQuery

$dataPhp = $('.data-php').attr('data-attr'); alert($dataPhp);

Такой способ отлично работает и многократно был проверен на практике с реальными данными. Если необходимо передать несколько значений переменных в JS, то просто добавьте столько атрибутов, сколько необходимо. Только не забудьте дать им разные имена. Достаточно будет просто пронумеровать или дать осмысленные названия. И в JavaScript создать переменную для каждого атрибута. На этом все. Теперь вы знаете как передавать значение переменой из PHP а JavaScript. А здесь вы узнаете как передавать данные обратно.

Читайте также: