Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 18.05.2016, 14:30
Аспирант
Отправить личное сообщение для NeilDaniels Посмотреть профиль Найти все сообщения от NeilDaniels
 
Регистрация: 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>


Как в этом блоке принять переменную массива? Гугл перешарил так, что он каждый раз уже требует капчу.
Ответить с цитированием
  #2 (permalink)  
Старый 18.05.2016, 14:44
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

А что ее принимать, вот она данные приняты: function(data).
Наверное вопрос как вывести полученные данные? Ну так как вам надо, стройте по ним соответствующий html-код и вставляйте, данные то массив, а не html.

А это к чему на клиенте?

<div id="receiv">
<?php
//код
?>

</div>

Если модальное (собственно оно не модальное и не окно), значит открывается по запросу, а значит никаких РНР в нем просто быть не может.

Последний раз редактировалось laimas, 18.05.2016 в 14:46.
Ответить с цитированием
  #3 (permalink)  
Старый 18.05.2016, 14:50
Аспирант
Отправить личное сообщение для NeilDaniels Посмотреть профиль Найти все сообщения от NeilDaniels
 
Регистрация: 18.05.2016
Сообщений: 35

laimas, за пределами скрипта переменная недоступна, вот в чём проблема. Как скрипт передал id, так скрипт и получил (data). Как полученные данные передать блоку div с id="receiv">? Я этого так и не нашёл нигде.

По п.2 - да пока в тестовом режиме всё.

Последний раз редактировалось NeilDaniels, 18.05.2016 в 14:53.
Ответить с цитированием
  #4 (permalink)  
Старый 18.05.2016, 15:02
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

return $BD_str[]; //возвращаем массив - откуда и куда?
Если это функция и из нее возврат, то запросивший ее скрипт должен выдать возвращенное значение серверу - echo main_function($_POST['id']). Причем, если после выдачи ответа серверу в РНР коде есть вывод, то не echo, а exit(main_function($_POST['id']));

Правда конструкция написанная даже с натяжкой не тянет на функцию, а значит return не при делах тут, он не выводит в браузер.
Ответить с цитированием
  #5 (permalink)  
Старый 18.05.2016, 15:13
Аспирант
Отправить личное сообщение для NeilDaniels Посмотреть профиль Найти все сообщения от NeilDaniels
 
Регистрация: 18.05.2016
Сообщений: 35

laimas,
ну а как тогда transmission.php должен передать массив? Как тогда запрошенная функция с переданным ей значением и айдишником блока передаст этому блоку (а не вызывавшему функцию скрипту) сформированный массив? И как в этом блоке принять массив?
Что я неясного спрашиваю?
Ответить с цитированием
  #6 (permalink)  
Старый 18.05.2016, 15:19
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от NeilDaniels
ну а как тогда transmission.php должен передать массив?

Сервер общается с клиентом посредством HTTP, и все что он отдает клиенту, это строка, нет никаких массивов! Нет такого понятия в HTML.

Возвращать нужно в JSON формате, из которого клиент получит исходный массив.

Сообщение от NeilDaniels
Что я неясного спрашиваю?
Вы написали какую-то приблуду непонятную, наверное думая, что тут догадаются что вы там и как отдаете клиенту.

Прежде чем спросить и чтобы вас поняли, необходимо пояснять, тут же не чародеи однако.
Ответить с цитированием
  #7 (permalink)  
Старый 18.05.2016, 15:26
Аспирант
Отправить личное сообщение для NeilDaniels Посмотреть профиль Найти все сообщения от NeilDaniels
 
Регистрация: 18.05.2016
Сообщений: 35

laimas,
хорошо, данные вернутся в JSON формате.
Как их разобрать в
<div id="receiv">
</div>
?

Извиняюсь, если выражаюсь непонятно, только учусь.
Ответить с цитированием
  #8 (permalink)  
Старый 18.05.2016, 15:32
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 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.
Ответить с цитированием
  #9 (permalink)  
Старый 18.05.2016, 15:38
Аспирант
Отправить личное сообщение для NeilDaniels Посмотреть профиль Найти все сообщения от NeilDaniels
 
Регистрация: 18.05.2016
Сообщений: 35

laimas,
да по коду скрипта вызова функции понятно, видел не раз.

Но, [нецензурно и нетерпеливо], что должно быть в блоке
<div id="receiv">

</div>

, куда (или не туда?) функция возвращает ответ?
Как там принять полученные значения??????????? Вот ни разу не видел примера, где принятые данные разбираются именно в #receiv.

Последний раз редактировалось NeilDaniels, 18.05.2016 в 15:41.
Ответить с цитированием
  #10 (permalink)  
Старый 18.05.2016, 15:42
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

1) Какая функция?

2) Сервер может возвращать и готовый html код того, что должно быть вставлено на клиенте. Не зная как все это работает, почему используете массив?
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как получить переменную в дочерней функции Yurik Общие вопросы Javascript 2 16.03.2012 15:44
Как получить переменную с сервера? DmitryT AJAX и COMET 2 03.08.2011 18:16
Ссылка test.php?ID=33 Как получить в переменную значение 33 из URL? Anatuz Общие вопросы Javascript 1 27.07.2010 13:32
Как получить высоту DIV, установленную автоматически YOricH Internet Explorer 4 22.07.2009 17:15
Как получить содержимое <script></script> из полученного ответа vvsh Events/DOM/Window 2 09.07.2009 20:32