Как в ajax передать переменную из php
Перейти к содержимому

Как в ajax передать переменную из php

  • автор:

Передать переменную из index.php через ajax в handler.php и обратно

Пытаюсь разобраться в основах основ. Есть три файла: index.html, ajax.html и handler.php.
1. При клике на тексте, нужно передать переменную text в handler.php через ajax.
2. Вывести, то, что передали
3. Затем передать переменную name из файла handler.php в index.php и снова вывести, что получили с помощью js.
index.php:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
      Document  
Кликни сюда
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
$(function() { $('.text').on('click', function (event) { /* event.preventDefault(); */ var errors = false; if( !errors ){ let text = $('.text'); $.ajax({ method: 'GET', url: 'handler.php', data: { key1: text, }, success: function (res) { console.log(res); }, error: function (xhr, textStatus, errorThrown) , }); }; }); });

handler.php:

1 2 3 4
 $name='Юрий'; echo '$_GET['key1'], $name'; ?>

94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:

Через ajax в url:’ajax.php’, нужно передать одну переменную, и значение radio кнопки
Как значение radio передать я разобрался, а вот как еще переменную со страницы кинуть в url.

Вытащить переменную из цикла PHP в функцию JS, и через AJAX обратно в PHP
Здравствуйте! Моя задача сделать форму обратной связи, но не самую простую. Изначально на форме.

Передать через Ajax php переменную
Со страницы авторизации, идет перенаправление на главную страницу. Все данные о пользователи.

Эксперт PHP

3834 / 3182 / 1337
Регистрация: 01.08.2012
Сообщений: 10,788

ЦитатаСообщение от maks_7 Посмотреть сообщение

ЦитатаСообщение от maks_7 Посмотреть сообщение

url: ‘handler.php’,

Всегда указывайте абсолютные пути, например /ajax.js

ЦитатаСообщение от maks_7 Посмотреть сообщение

var username = »;

Откуда взялась переменная $name?

ЦитатаСообщение от maks_7 Посмотреть сообщение

var username

ЦитатаСообщение от maks_7 Посмотреть сообщение

Разные названия переменных.

ЦитатаСообщение от maks_7 Посмотреть сообщение

let text = $(‘.text’);

ЦитатаСообщение от maks_7 Посмотреть сообщение

По идее нужно подставлять $(‘.text’).text()

ЦитатаСообщение от maks_7 Посмотреть сообщение

echo ‘$_GET[‘key1′], $name’;

ЦитатаСообщение от maks_7 Посмотреть сообщение

В целом — действуйте поэтапно. Берём первый пункт:

ЦитатаСообщение от maks_7 Посмотреть сообщение

1. При клике на тексте, нужно передать переменную text в handler.php через ajax.

Добейтесь, чтобы по клику переменная передавалась в скрипт. Проверить это можно во вкладке Network в консоли браузера. Как увидите, что GET-параметр корректно передаётся — переходите к следующему шагу.

87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь

Отправить массив из php(handler, сервер) в php(ajax, клиент)
Дело вот какое: имеется база сотрудников. Клиенту в браузер выдаю список (select). При выборе.

Передать массив в формате JSON из AJAX в PHP и обратно
Здравствуйте! Помогите пожалуйста разобраться. Нужно передать массив из AJAX в PHP, а потом.

Передать переменную из php в ajax
Все привет,есть два скрипта php и ajax,находятся они не на одной странице,мне нужно передать.

Как послать запрос из index.php файла в order.php файл, и из него принять обратно ответ?
Как послать post-запрос из index.php файла в order.php файл, и из него принять обратно json-ответ.

Передать результат успешного выполнения Ajax на jQuery в php переменную
Пожалуй одна из самых тривиальных задач для профи и одна из самых сложных для понимания для.

Передать через AJAX в PHP двумерный массив
Добрый день. Есть примерно такой код: var range = , sliderValues = ; . sliderValues = range;.

Как в ajax передать переменную из php

Покинул форум
Сообщений всего: 329
Дата рег-ции: Янв. 2012

Помог: 6 раз(а)

В общем, сломал себе голову. Информации много, но так ничего толкового для себя и не вынес. Как ПРОЩЕ и удобнее всего передать строковое значение из js через ajax в php? Использую json. Делаю так:

CODE (javascript):
скопировать код в буфер обмена
function gotoserver ( ) {
var location = document. getElementById ( ‘Id1’ ) . value ;
$. post ( ‘./obr.php’ , location , success , ‘json’ ) ;
function success ( msg ) {
alert ( msg ) ;

Судя по алерту, данные до сервера доходят. Но КАК получить присланную строку в php? Собственно, мне нужно только значение этого самого document.getElementById(‘Id1’).value, больше ничего. Может, я нагородил лишнего? Пробовал еще так:

CODE (javascript):
скопировать код в буфер обмена
var location = ‘< \" location \" : \" ' + document. getElementById ( 'Id1' ) . value + ' \" >‘ ;
$. post ( ‘./obr.php’ , location , success , ‘json’ ) ;
function success ( msg ) {
alert ( msg ) ;

А в php пытался выловить нужную переменную через $_POST[‘location’], но массив $_POST ожидаемо пустой. Понимаю, что туплю. Но подскажите, где?

Отправлено: 17 Мая, 2012 — 22:58:54

Покинул форум
Сообщений всего: 349
Дата рег-ции: Апр. 2011

Помог: 3 раз(а)

В Jquery это выглядит так:

var name = «Передаю данные»;
$.post(‘./obr.php’, , function(data) );

Отправлено: 17 Мая, 2012 — 23:24:22

Покинул форум
Сообщений всего: 329
Дата рег-ции: Янв. 2012

Помог: 6 раз(а)

CODE (javascript):
скопировать код в буфер обмена
function gotoserver ( ) {
var location = document. getElementById ( ‘location’ ) . value ;
$. post ( ‘./obr.php’ , { dat : location } , success , ‘json’ ) ;
function success ( msg ) {
alert ( msg ) ;

В обработчике php пишу:

echo $_POST [ ‘dat’ ]

Ничего не выводится

На всякий случай полный листинг файла index.php:

CODE (html):
скопировать код в буфер обмена
< title >Старница 1 < / title >
function gotoserver() < var location=document.getElementById('location').value; $.post( './obr.php', , success, ‘json’);
function success(msg) <

(Отредактировано автором: 17 Мая, 2012 — 23:30:32)

Отправлено: 17 Мая, 2012 — 23:42:28

Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010
Откуда: Чернигов

Помог: 299 раз(а)

Hawkmoth но у location’a нету value и переменая скорее всего не определена, посмотрите ошибки.

——
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново — вы явно что-то делаете не так.

Отправлено: 17 Мая, 2012 — 23:53:35

Покинул форум
Сообщений всего: 329
Дата рег-ции: Янв. 2012

Помог: 6 раз(а)

Нет, это просто я так коряво краткий вариант страницы накидал

На самом деле, kappa всё правильно написал, и пример работает, просто я ждал alert с выводом переданных данных, а клиент мне фигу показывал. Судя по всему, из-за формата ожидаемых данных. Вот так всё работает:

Курсы javascript

laimas, лучше так, чем заливать как есть.
Можно addslashes заюзать, если итоговый размер записи крайне важен.

25.06.2018, 15:03
Регистрация: 14.01.2015
Сообщений: 12,990
25.06.2018, 15:13
Регистрация: 04.12.2012
Сообщений: 3,654

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

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

25.06.2018, 15:21
Регистрация: 14.01.2015
Сообщений: 12,990

Nexus, причем тут драйвер? Вообще, принять и сразу htmlspecialchars, это либо от пугливости, либо от непонимания.

Нельзя так делать.

Страница 1 из 2 1 2 >

Передать данные из javascript PHP Ajax

Передача данных от fronted на backend(от javascript в php в нашем случае) сейчас достаточно часто используемая процедура, естественно, когда известно, как это сделать.

Что потребуется для работы:

  • Сервер, где можно запустить php-скрипты;
  • Текстовый редактор;
  • Базовые знания PHP;
  • Базовые знания Javascript;
  • Понимание как работают GET и POST — запросы, в данной статье в основном будут использоваться POST — запросы.

Совсем простой пример

Несколькими годами раньше, нужно было писать большие и сложные запросы, но с приходом Jquery, все стало гораздо проще, поэтому первым шагом подключаем библиотеку jquery:

В первом примере, будем просто отправлять строку, при помощи функции $.post Jquery, где первым параметром передается название нашего php-скрипта, вторым — данные, если они есть, третьим функция обратного вызова(callback), в аргумент data, которой к нам придет ответ от сервера, если он будет. Пример кода js:

  

В результате у Вас должен получиться файл index.php, примерно такого содержания:

      Test Ajax php      

В php эти данные придут в $_POST[‘dataReq’]. Поэтому в самом простом примере, мы возьмем эту строку и отправим ее обратно, без всякой проверки. Пример кода script.php:

Открываем консоль в браузере и проверяем результат. В данном примере произошла передача данных от javascript к php и обратно, но без проверок, это было сделано специально, чтобы не усложнять и настроить коннект. В некоторых случая, когда нужно просто подгрузить данные, в фоновом режиме, этого может оказаться достаточно. Ссылка, на скачивание архива с примером, описанного выше.

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

Чуть сложнее

В реальности, загрузка данных происходит при наступлении какого-то события, например нажатие на кнопку, или ввод символов с троку поиска. Усложним пример, добавив обработчик на кнопку и подгрузку в div данных с сервера.

Модифицируем файл index.php, добавим кнопку,

, куда будем выводить результат и немного перепишем js, отредактируйте Ваш index.php, чтобы он стал такого содержания:

      Test Ajax php       

Также немного изменим файл script.php, его новый код:

Теперь мы по клику передаем число 5, на сервере к пришедшему числу прибавляется 25 и выводится под кнопкой число 30. То есть, происходит отправка данных, модификация и отображение. По ссылке ниже, можно скачать новый пример:

Передача и прием объектов

Наиболее распространенным данными, при передачи Ajax являются объекты, например в формате JSON. В следующем примере разберем вариант, где будем передавать данные из поля input, на сервере будем обрабатывать приходящие данные и отправлять назад массив php преобразованный в JSON объект и наполнять из него тег select, в зависимости от отправленного числа. Для этого модифицируем файл index.php, его новый код будет таким:

      Test Ajax php    

В js добавилась проверка приходящего результата, если он не равен 0, то в цикле наполняем тег select. Если же нам придет в ответе 0, это означает, что такого списка нет, так как нет такого ключа в массиве на сервере, (см. ниже описание под обновленным кодом script.php). В коде js добавил комментарии, за что отвечает та или иная строка.

Также модифицируем файл script.php, его новый код будет таким:

 array( 1 => 'Автомобиль', 2 => 'Лодка', 3 => 'Дом', 4 => 'Коробка', 5 => 'Самокат', 6 => 'Мотоцикл', 7 => 'Автобус', 8 => 'Баржа', ), 2 => array( 1 => 'Роза', 2 => 'Фиалка', 3 => 'Тюльпан', 4 => 'Ромашка', 5 => 'Ирис', ), 3 => array( 1 => 'Ресторан', 2 => 'Магазин', 3 => 'Кафе', 4 => 'Бистро', 5 => 'Пекарня', 6 => 'Палатка с пирожками', ), 4 => array( 1 => 'Красный', 2 => 'Синий', 3 => 'Белый', 4 => 'Оранжевый', 5 => 'Зеленый', 6 => 'Фиолетовый', 7 => 'Черный', 8 => 'Желтый', 9 => 'Серый', 10 => 'Розовый', 11 => 'Голубой', ), 5 => array( 1 => 'Австралия', 2 => 'Индия', 3 => 'Китай', 4 => 'Япония', 5 => 'Испания', ), ); $param = $_POST['dataReq']; if(array_key_exists($param,$arrToSend))< echo json_encode($arrToSend[$param],JSON_UNESCAPED_UNICODE); >else < echo 0; >?>

В нем добавился массив, с элементами, и обработка данных из запроса, в переменную $param сохраняем то, что пришло у нас от javascript, затем при помощи конструкции if else и встроенной функции array_key_exists проверяем есть ли такой ключ в массиве $arrToSend, если есть, то трансформируем вложенный массив, по этому ключу при помощи функции json_encode в формат JSON и отправляем, если же ключа в основном массиве нет, то просто отправляем 0, это нужно для проверки на стороне js.

Результат этого примера должен быть такой, как на gif-ке ниже:

Ссылка на оф. сайт Jquery, документация по функции $.post, которая используется в статье. https://api.jquery.com/jquery.post/

Статья в ближайшее время будет дописана, с большим количеством примеров.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *