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

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

23.04.2015, 15:38. Показов 2753. Ответов 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
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
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
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
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
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
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
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru