Форум программистов, компьютерный форум, киберфорум
Наши страницы
JavaScript
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
Explosive68
1 / 1 / 0
Регистрация: 23.04.2015
Сообщений: 11
#1

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

23.04.2015, 15:38. Просмотров 1041. Ответов 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)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.04.2015, 15:38
Ответы с готовыми решениями:

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

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

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

Как вызвать php функцию из Ajax?
Как вызвать php функцию с Ajax? файл profile.php if(error != true){...

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

3
arcmag
259 / 255 / 180
Регистрация: 27.06.2014
Сообщений: 665
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
Explosive68
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
259 / 255 / 180
Регистрация: 27.06.2014
Сообщений: 665
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
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.04.2015, 17:14

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

Как отправить и получить ответ от php через ajax?
Здравствуйте. Не совсем было понятно, где создавать тему (php или js). Если...

Отправка заявки через ajax и php не удается, выдает ошибку
Помогите пожалуйста! Не работает форма отправки заявки. В файле .js следующий...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru