18.05.2016, 14:30
|
Аспирант
|
|
Регистрация: 18.05.2016
Сообщений: 35
|
|
Обработка ответа $.post запроса - как в блоке div получить переменную массива
По двойному клику на строке таблицы получаем значение id (номер по порядку) и возвращаем ответ в блок <div id="receiv"> </div>
<script>
$(function() {
$(".rowlink").bind( 'dblclick', function() {
var id = $(this).find('.id').html();
$.post('transmission.php', {'id' : id}, function(data){$("#receiv").text(data);});
});
});
</script>
Обработчик запроса transmission.php
<?php
if (isset($_POST['id'])) {$id = $_POST['id'];}
//здесь по id (ключу таблицы) из строки таблицы БД заполняем массив
return $BD_str[]; //возвращаем массив
?>
Блок модального окна, где принимается массив.
<div id="receiv">
<?php
//код
?>
</div>
Как в этом блоке принять переменную массива? Гугл перешарил так, что он каждый раз уже требует капчу.
|
|
18.05.2016, 14:44
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,990
|
|
А что ее принимать, вот она данные приняты: function(data).
Наверное вопрос как вывести полученные данные? Ну так как вам надо, стройте по ним соответствующий html-код и вставляйте, данные то массив, а не html.
А это к чему на клиенте?
<div id="receiv">
<?php
//код
?>
</div>
Если модальное (собственно оно не модальное и не окно), значит открывается по запросу, а значит никаких РНР в нем просто быть не может.
Последний раз редактировалось laimas, 18.05.2016 в 14:46.
|
|
18.05.2016, 14:50
|
Аспирант
|
|
Регистрация: 18.05.2016
Сообщений: 35
|
|
laimas, за пределами скрипта переменная недоступна, вот в чём проблема. Как скрипт передал id, так скрипт и получил (data). Как полученные данные передать блоку div с id="receiv">? Я этого так и не нашёл нигде.
По п.2 - да пока в тестовом режиме всё.
Последний раз редактировалось NeilDaniels, 18.05.2016 в 14:53.
|
|
18.05.2016, 15:02
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,990
|
|
return $BD_str[]; //возвращаем массив - откуда и куда?
Если это функция и из нее возврат, то запросивший ее скрипт должен выдать возвращенное значение серверу - echo main_function($_POST['id']). Причем, если после выдачи ответа серверу в РНР коде есть вывод, то не echo, а exit(main_function($_POST['id']));
Правда конструкция написанная даже с натяжкой не тянет на функцию, а значит return не при делах тут, он не выводит в браузер.
|
|
18.05.2016, 15:13
|
Аспирант
|
|
Регистрация: 18.05.2016
Сообщений: 35
|
|
laimas,
ну а как тогда transmission.php должен передать массив? Как тогда запрошенная функция с переданным ей значением и айдишником блока передаст этому блоку (а не вызывавшему функцию скрипту) сформированный массив? И как в этом блоке принять массив?
Что я неясного спрашиваю?
|
|
18.05.2016, 15:19
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,990
|
|
Сообщение от NeilDaniels
|
ну а как тогда transmission.php должен передать массив?
|
Сервер общается с клиентом посредством HTTP, и все что он отдает клиенту, это строка, нет никаких массивов! Нет такого понятия в HTML.
Возвращать нужно в JSON формате, из которого клиент получит исходный массив.
Сообщение от NeilDaniels
|
Что я неясного спрашиваю?
|
Вы написали какую-то приблуду непонятную, наверное думая, что тут догадаются что вы там и как отдаете клиенту.
Прежде чем спросить и чтобы вас поняли, необходимо пояснять, тут же не чародеи однако.
|
|
18.05.2016, 15:26
|
Аспирант
|
|
Регистрация: 18.05.2016
Сообщений: 35
|
|
laimas,
хорошо, данные вернутся в JSON формате.
Как их разобрать в
<div id="receiv">
</div>
?
Извиняюсь, если выражаюсь непонятно, только учусь.
|
|
18.05.2016, 15:32
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,990
|
|
Можете непосредственно указать методу .post(), что ожидаются данные в JSON, он разберет его (но при условии что нет ошибок в нем) и data будет уже массивом, если сервер отдает индексный массив, в противном случае это будет объект, в котором ключи ассоциативного массива будут являться его свойствами.
Чтобы обрабатывать ошибки возможные лучше использовать метод .ajax(), но можно и в .post() поступать так:
$.post('transmission.php', {'id' : id}, function(data){
if(data) $("#receiv").text(data); //$("#receiv").text(data); так конечно нельзя, подразумевается, что будет сформирован html из массива, и он будет вставляться
else //иначе произошла ошибка
}, 'json');
Последний раз редактировалось laimas, 18.05.2016 в 15:39.
|
|
18.05.2016, 15:38
|
Аспирант
|
|
Регистрация: 18.05.2016
Сообщений: 35
|
|
laimas,
да по коду скрипта вызова функции понятно, видел не раз.
Но, [ нецензурно и нетерпеливо], что должно быть в блоке
<div id="receiv">
</div>
, куда (или не туда?) функция возвращает ответ?
Как там принять полученные значения??????????? Вот ни разу не видел примера, где принятые данные разбираются именно в #receiv.
Последний раз редактировалось NeilDaniels, 18.05.2016 в 15:41.
|
|
18.05.2016, 15:42
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,990
|
|
1) Какая функция?
2) Сервер может возвращать и готовый html код того, что должно быть вставлено на клиенте. Не зная как все это работает, почему используете массив?
|
|
|
|