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

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

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

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

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

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 переменную
Со страницы авторизации, идет перенаправление на главную страницу. Все данные о пользователи...

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

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

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

3
 Аватар для arcmag
347 / 322 / 203
Регистрация: 27.06.2014
Сообщений: 762
23.04.2015, 16:23 2
Можно вот так попробовать если я правильно понял вам просто нужно передать информацию пхп странице без перезагрузки сайта...
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  [ТС] 3
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 4
Лучший ответ Сообщение было отмечено 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
23.04.2015, 17:14
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
23.04.2015, 17:14
Помогаю со студенческими работами здесь

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Как проверить, что файл НЕ существует с помощью Bash
bytestream 25.01.2025
В системном администрировании проверка существования файлов является фундаментальной операцией, особенно при написании скриптов на Bash. Правильная обработка ситуаций, когда файл отсутствует,. . .
Как проверить, что строка пустая, неопределена или null в JavaScript
bytestream 25.01.2025
При разработке веб-приложений на JavaScript разработчики регулярно сталкиваются с необходимостью проверки строковых значений на различные состояния. Валидация данных является критически важным. . .
Как проверить существование ключа в объекте или массиве в JavaScript
bytestream 25.01.2025
При разработке веб-приложений на JavaScript программисты постоянно сталкиваются с необходимостью работать с объектами и массивами. Эти структуры данных являются фундаментальными элементами языка и. . .
Как создать ArrayList из массива (array) в Java
bytestream 25.01.2025
При разработке программного обеспечения на языке Java программисты часто сталкиваются с необходимостью эффективного управления наборами данных. Массивы и ArrayList являются двумя фундаментальными. . .
Как сгенерировать случайные целые числа (int) в указанном диапазоне в Java
bytestream 25.01.2025
В программировании генерация случайных чисел является важнейшим инструментом для решения множества практических задач. От создания игровых механик до реализации алгоритмов машинного обучения, от. . .
Как сделать, чтобы grep выводил строки до и после найденной
hw_wired 25.01.2025
Утилита grep стала незаменимым инструментом для поиска и фильтрации информации в Unix-подобных операционных системах. Эта командная утилита позволяет осуществлять поиск строк, соответствующих. . .
Как клонировать определенную ветку в Git
bytestream 24.01.2025
Одной из ключевых функций Git является возможность клонирования веток, что позволяет создавать локальные копии удаленных репозиториев и работать с определенными версиями проекта. Этот механизм. . .
Как в цикле обойти строки DataFrame в Pandas Python
bytestream 24.01.2025
DataFrame представляет собой одну из основных структур данных в библиотеке Python Pandas, которая организует информацию в виде двумерной таблицы с строками и столбцами. Эта структура данных особенно. . .
Как получить имя текущей ветки в Git
bytestream 24.01.2025
При работе с Git часто возникает необходимость определить имя текущей ветки, в которой ведется разработка. Знание текущей ветки является критически важным аспектом для эффективного управления. . .
Как отсортировать массив объектов по значению поля объекта в JavaScript
bytestream 24.01.2025
При разработке веб-приложений на JavaScript разработчики часто сталкиваются с необходимостью работать с массивами объектов. Эти структуры данных представляют собой упорядоченные наборы элементов, где. . .
Ошибка "src refspec master does not match any" при пуше коммита в Git
bytestream 24.01.2025
При работе с системой контроля версий Git разработчики нередко сталкиваются с различными ошибками, одной из которых является сообщение "src refspec master does not match any". Эта ошибка возникает. . .
Как округлить не более двух цифр после запятой в JavaScript
bytestream 24.01.2025
При работе с числами в JavaScript разработчики часто сталкиваются с необходимостью округления десятичных значений до определенного количества знаков после запятой. Это особенно важно при работе с. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru