Всем привет. Как-то я писал статью на тему передачи значений переменных из PHP в JS и после этого меня много просили сделать материал по теме передачи данных в обратном порядке, то есть из JS в PHP. И вот наконец это свершилось, дошли руки. Скажу сразу, что в примере буду использовать jQuery, поскольку передавать данные из JS в PHP мы будет через Ajax, а на JQ это сделать проще всего. Да и нет никакого желания писать вдвое, а то и втрое больше кода на чистом JS. Поэтому извиняйте. Итак, рассмотрим вариант, в котором будет задействовано наиболее часто используемое JavaScript событие — клик по элементу. В нашем случае это будет кнопка. Для того, чтобы увидеть работу нашего скрипта, создадим HTML страницу, на которую будем выводить результат через PHP.
Чтобы передать переменную из JavaScript в PHP, создадим файл js.js, в котором пропишем Ajax запрос на сервер. Главное — не забыть подключить его к странице, так же как и jQuery. И давайте напишем код.
На второй строке я создал переменную txt и поместил в нее значение Hello. Это для примера. В реальности данные обычно берутся со страницы, например из формы.
url
путь к PHP файлу-обработчику
type
тип передачи данных. В нашем случае POST
data
какие данные передаем (указываем переменную)
success
функция вывода результата запроса при успешной обработке
error
функция вывода ошибки работы скрипта
И теперь давайте создадим тот самый файл func.php с незамысловатым содержанием:
1
2
3
4
< ?php
$txt=$_POST['txt'];echo$txt;
< ?php
$txt = $_POST['txt'];
echo $txt;
По сути ля того, чтобы передать данные из JavaScript в PHP, этого достаточно. Другое дело, если вам нужно передать большой объем информации, например массив, то здесь чуть сложнее, но принцип остается тем же. Можете посмотреть как передаются данные из все формы сразу в статье про отправку формы с сайта без перезагрузки страницы. Но давайте я покажу вам еще один пример, в котором данные будут передаваться в формате JSON из трех переменных.
$(document).on('click','#but',function(){
let name ='Вася';
let age =35;
let location ='Москва';
$.ajax({
url:'func.php',
type:'POST',
dataType:'json',
data:{
func:'func_data',
name: name,
age: age,
location: location,},
success:function(data){
$('p.out').text('Я '+data.name+', мне '+data.age+' лет. Мой город: '+data.location);}, error:function(){
console.log('ERROR');}})});
$(document).on('click', '#but', function(){
let name = 'Вася';
let age = 35;
let location = 'Москва';
$.ajax({
url: 'func.php',
type: 'POST',
dataType: 'json',
data: {
func: 'func_data',
name: name,
age: age,
location: location,
},
success: function(data){
$('p.out').text('Я '+data.name+', мне ' +data.age + ' лет. Мой город: ' +data.location);
}, error: function(){
console.log('ERROR');
}
})
});
И PHP код для обработки запроса и вывода результата:
Надеюсь, что теперь у вас появилось понимание о том, как передавать значения переменных из JS в PHP. Но все равно для этого нужна практика. Рекомендую экспериментировать на локальном сервере, а уже потом внедрять готовый код в рабочие проекты.
В чем может быть проблема, делаю всё как у вас на видео но у меня возвращается непонятно что. Т.е. в поле возвращается текст html странички целиковый (можно тут посмотреть -https://mixmovie.ru/testok2/func777.php)
Спасибо за информацию.
Первый вариант не работает! там разногласие finc.php func.php
но все равно не работает. Второй работает но jscon мне не нужен. Исправьте пожалуйста.
Исправил. Если не работает, значит что-то не так делаете.
а если я не хочу создавать отдельный буфер для создания переменной txt, в виде js.js, а хотел бы использовать onclick(this.value) вместо txt.
мне потребуется из формы скриптом сначала в js.js все таки тараканить переменную или есть способ гуманнее ?
Не понял вопроса.
data: «phone=» + encodeURIComponent(phone)
— Вот пример того, как нужно передавать данные с помощью $.ajax!!!
А автор просто пишет data: txt.(В котором просто слово HEllo, хотя должно быть «HEllo=HEllo») Позор автору
Обосновать бы надо почему твой пример более правильный.
Так это не «Как передать значение переменной из JavaScript в PHP», а просто херня какая-то тут не переменные передаются
Не переменные, а их значения.
В чем может быть проблема, делаю всё как у вас на видео но у меня возвращается непонятно что. Т.е. в поле возвращается текст html странички целиковый (можно тут посмотреть -https://mixmovie.ru/testok2/func777.php)
Отправляю такой код:
let txt = ‘Hello’;
$.ajax({
url: ‘https://mixmovie.ru/testok2/func777.php’,
type: ‘POST’,
data: {
data: txt,
},
success: function(data){
$(‘p.out’).text(data);
},
error: function(){
console.log(‘ERROR’);
}
})
Не понимаю, почему у вас возвращает нормальные значения, а у меня такую белеберду.
Что у вас написано в обработчике и при каких условиях срабатывает ajax запрос?
Вы не можете передавать значения переменных из кода JavaScript текущей страницы в код PHP текущей страницы