Форум программистов, компьютерный форум, киберфорум
JavaScript
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/15: Рейтинг темы: голосов - 15, средняя оценка - 4.80
1 / 1 / 0
Регистрация: 23.04.2015
Сообщений: 11

Вытащить переменную из цикла PHP в функцию JS, и через AJAX обратно в PHP

23.04.2015, 15:38. Показов 2998. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте!

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

PHP
1
2
3
4
5
6
7
8
9
echo '<table class="markanstable">';
foreach ($rows as $row) {
    echo '<tr>';
    echo '<td style="text-align:center;">';
        echo '<input class="themelistel" id="listelid" name="listelname" type="image" value="'. $row->title .'" onclick="ShowTextArea('. $row->id . ');";/> <br>';
    echo '</td>';
    echo '</tr>';
}
echo '</table>
Затем, уже после прогрузки страницы (т.е. пхп отработал свою часть) по клику пользователем на один из элементов каким-то образом нужно запомнить значение $row->id и использовать его в дальнейшем для изменения записи в бд sql запросом. И всё это БЕЗ перезагрузки страницы.

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

JavaScript
1
2
3
4
5
6
7
function ShowTextArea(cid) {
$.post("index.php","exactId ="+cid, function(s) {
                $("#testdiv").html(cid);
                alert('testdiv=' + $("#testdiv").html());
                
            });
}
Здесь, я так понял, происходит передача данных через метод post в переменную exactId и изменение содержимого блока с id=testdiv. Вот что делать дальше уже не уверен, нужно как-то работать с переменной exactId через php-код, но он уже отработан... Так как же мне организовать работу php-кода с переменной, которая принимает значение только после взаимодействия на клиенте? Пробовал следующее:

PHP
1
2
3
4
5
6
7
8
if (isset($_POST['exactId'])) {
    $phpvar = addslashes($_POST['exactId']);
    $query = "SELECT id, title FROM #__eventcal WHERE id='". $phpvar ."'";
    $database->setQuery( $query );
    $marketingrequests = $database->loadObjectList();
                        
    var_dump($marketingrequests);
}
В этом случае exactId всегда NULL (при входе на страницу это нормально, но должно меняться при отработке функции, но этого не происходит).


Всё не доходит, как именно будет выглядеть схема работы страницы:

1) Прогружается страница, отображается список ссылок, пхп отработал.
2) Кликаем на одну из ссылок, происходит вызов js функции, в нее параметром передается Id, в ней же с помощью AJAX мы отправляем на сервер данные post запросом в виде второго параметра
3) Имеем обновленную страницу без ее перезагрузки.
4) Дальше нужно как-то использовать в php данные из AJAX post, но вот и вопрос, как это сделать?

Поправьте, что не так.


Задавал вопрос в ветке начинающих пхп-программистов, сказали парень тебе не сюда. Не нашел ветки конкретно по AJAX, поэтому спрашиваю здесь. Извините, если опять промазал.
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
23.04.2015, 15:38
Ответы с готовыми решениями:

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

Передать переменную из js в php и обратно
function getstations(value) { var str=document.getElementById('street'); мне str.value надо передеать в select.php, чтобы к нему...

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

3
 Аватар для arcmag
347 / 322 / 203
Регистрация: 27.06.2014
Сообщений: 762
23.04.2015, 16:23
Можно вот так попробовать если я правильно понял вам просто нужно передать информацию пхп странице без перезагрузки сайта...
JavaScript
1
2
3
4
5
6
7
function ShowTextArea(cid){
    var q = new XMLHttpRequest;
    q.open("GET",youPHPpage.php+"?cid="+cid); // отправляем ваш $row->id странице ПХП 'youPHPpage.php'
    // после чего в этой странице получаем $row->id при помощи $cid = $_GET['cid'];
    // ну а дальше делайте с ней сто вам нужно...
    q.send();
}
Добавлено через 14 минут
поправка
JavaScript
1
2
3
4
5
6
7
function ShowTextArea(cid){
    var q = new XMLHttpRequest;
    q.open("GET","youPHPpage.php?cid="+cid); // отправляем ваш $row->id странице ПХП 'youPHPpage.php'
    // после чего в этой странице получаем $row->id при помощи $cid = $_GET['cid'];
    // ну а дальше делайте с ней сто вам нужно...
    q.send();
}
0
1 / 1 / 0
Регистрация: 23.04.2015
Сообщений: 11
23.04.2015, 16:40  [ТС]
arcmag, спасибо за ответ. Мне, как начинающему, важно иметь четко работающий кусок кода, на который можно положиться и от него плясать.

Только что попробовал сделать по-вашему варианту. Возникла еще парочка вопросов: $cid = $_GET['cid'] можно писать где угодно на странице? Для проверки и дебага я написал такой код:

PHP
1
2
3
4
5
6
    
if (isset($_GET['cid'])) {
    $cid=$_GET['cid'];
    var_dump($cid);
    exit;
}
Но $cid всё также NULL при первой прогрузке и затем после отработки функции по нажатию на ссылки (а она отрабатывает 100%, алертами проверено в начале и в конце).
0
 Аватар для arcmag
347 / 322 / 203
Регистрация: 27.06.2014
Сообщений: 762
23.04.2015, 17:14
Лучший ответ Сообщение было отмечено Explosive68 как решение

Решение

JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
    var q = new XMLHttpRequest(); // создаем экземпляр объекта XMLHttpRequest
    q.open("GET","youPHPpage.php?cid="+cid); // открываем соединение
    // первым аргументов передаем метод запроса (GET, POST и тд)
    
    // вторым аргументом передаем адрес PHP страницы которой мы отправим наши данные из JS (youPHPpage.php )
    // после адреса ставится знак (?) 
    // пишется имя переменной которая передается пхп файлу и ее значение ("youPHPpage.php?cid="+cid)  
    
    // третим аргументом может передаваться значение true или false 
    // использовать ли асинхронный запрос (если не указывать то true)
    
    q.send(); // отправляем запрос нашему PHP файлу
Короче вам нужно тут читать
https://ru.wikipedia.org/wiki/XMLHttpRequest
я не очень хорошо умею объяснять да и долго это слишком получится.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
23.04.2015, 17:14
Помогаю со студенческими работами здесь

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

Получить конкретную php-переменную ajax-запросом
Есть форма для отправки комментариев.. Обработчику отправляются post-данные. возникла необходимость получить их назад в обработанной форме...

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

Отправить данные через Ajax в определённую функцию PHP
Здравствуйте! Долго думал как объяснить суть вопроса, в общем есть функция ajax : $(document).ready(function(){ ...

Переменную из цикла в js записать в переменную php
Есть цикл на JS for (glavnoe = 0;glavnoe&lt;=3;glavnoe++){ код js код php } нужно,в переменную $n вписать значение glavnoeкаждый...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&amp;d=1772460536 Одним из. . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru