|
Обработка ответа $.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> Как в этом блоке принять переменную массива? Гугл перешарил так, что он каждый раз уже требует капчу. |
А что ее принимать, вот она данные приняты: function(data).
Наверное вопрос как вывести полученные данные? Ну так как вам надо, стройте по ним соответствующий html-код и вставляйте, данные то массив, а не html. А это к чему на клиенте? <div id="receiv"> <?php //код ?> </div> Если модальное (собственно оно не модальное и не окно), значит открывается по запросу, а значит никаких РНР в нем просто быть не может. |
laimas, за пределами скрипта переменная недоступна, вот в чём проблема. Как скрипт передал id, так скрипт и получил (data). Как полученные данные передать блоку div с id="receiv">? Я этого так и не нашёл нигде.
По п.2 - да пока в тестовом режиме всё. |
return $BD_str[]; //возвращаем массив - откуда и куда?
Если это функция и из нее возврат, то запросивший ее скрипт должен выдать возвращенное значение серверу - echo main_function($_POST['id']). Причем, если после выдачи ответа серверу в РНР коде есть вывод, то не echo, а exit(main_function($_POST['id'])); Правда конструкция написанная даже с натяжкой не тянет на функцию, а значит return не при делах тут, он не выводит в браузер. |
laimas,
ну а как тогда transmission.php должен передать массив? Как тогда запрошенная функция с переданным ей значением и айдишником блока передаст этому блоку (а не вызывавшему функцию скрипту) сформированный массив? И как в этом блоке принять массив? Что я неясного спрашиваю? |
Цитата:
Сервер общается с клиентом посредством HTTP, и все что он отдает клиенту, это строка, нет никаких массивов! Нет такого понятия в HTML. Возвращать нужно в JSON формате, из которого клиент получит исходный массив. Цитата:
Прежде чем спросить и чтобы вас поняли, необходимо пояснять, тут же не чародеи однако. |
laimas,
хорошо, данные вернутся в JSON формате. Как их разобрать в <div id="receiv"> </div>? Извиняюсь, если выражаюсь непонятно, только учусь. |
Можете непосредственно указать методу .post(), что ожидаются данные в JSON, он разберет его (но при условии что нет ошибок в нем) и data будет уже массивом, если сервер отдает индексный массив, в противном случае это будет объект, в котором ключи ассоциативного массива будут являться его свойствами.
Чтобы обрабатывать ошибки возможные лучше использовать метод .ajax(), но можно и в .post() поступать так: $.post('transmission.php', {'id' : id}, function(data){ if(data) $("#receiv").text(data); //$("#receiv").text(data); так конечно нельзя, подразумевается, что будет сформирован html из массива, и он будет вставляться else //иначе произошла ошибка }, 'json'); |
laimas,
да по коду скрипта вызова функции понятно, видел не раз. Но, [ <div id="receiv"> </div> , куда (или не туда?) функция возвращает ответ? Как там принять полученные значения??????????? Вот ни разу не видел примера, где принятые данные разбираются именно в #receiv. |
1) Какая функция?
2) Сервер может возвращать и готовый html код того, что должно быть вставлено на клиенте. Не зная как все это работает, почему используете массив? |
Часовой пояс GMT +3, время: 01:35. |
|