Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Обработка ответа $.post запроса - как в блоке div получить переменную массива (https://javascript.ru/forum/jquery/63110-obrabotka-otveta-%24-post-zaprosa-kak-v-bloke-div-poluchit-peremennuyu-massiva.html)

Dilettante_Pro 18.05.2016 17:20

NeilDaniels,
Цитата:

Сообщение от NeilDaniels
Мне нахер (извиняюсь за французский) принятые данные не нужны в скрипте-функции вызова серверного скрипта с передачей данных, мне они нужны в блоке div,

А нахер они вам нужны в div?
Обработка делается средствами скриптов, а не средствами html
Ловить их там не нужно - $("#receiv").text(data); или $("#receiv").html(data); их именно туда и положит

NeilDaniels 18.05.2016 17:31

В целом учебная задача такая.
Есть некая форма накладной, данные хранятся в таблице БД. Есть форма вывода данных из ТБД, есть форма добавления накладной.
По двойному клику на строке таблицы должна открываться форма редактирования накладной с уже заполненными полями. (Да, делаю через пятую точку, когда для заполнения полей формы делаю запрос к БД, а не заполняя поля напрямую из строки уже выведенной таблицы. По своим непонятным соображениям). По двойному клику передаю id строки на серверный скрипт, по запросу получаю данные из БД, и застрял на том, что не могу передать данные в div блок, в котором формируется форма редактирования (div блок изначально скрытый, рисуется через jqModal).

NeilDaniels 18.05.2016 17:33

Цитата:

Сообщение от Dilettante_Pro (Сообщение 416912)
NeilDaniels,

А нахер они вам нужны в div?
Обработка делается средствами скриптов, а не средствами html
Ловить их там не нужно - $("#receiv").text(data); или $("#receiv").html(data); их именно туда и положит

И как взять положенные $("#receiv").html(data)-ом? Эти данные тупо выводятся на экран, а мне они нужны в переменных div-а.

Dilettante_Pro 18.05.2016 17:38

NeilDaniels,
В div нет переменных - там есть (могут быть) элементы html
Переменные есть в скрипте, о чем вам так многократно и говорится.
Получили в скрипте data, разобрали их там же как угодно, сформировали массивы или что угодно - и делайте с ними что хотите. При чем тут div?

NeilDaniels 18.05.2016 17:41

Цитата:

Сообщение от Dilettante_Pro (Сообщение 416916)
NeilDaniels,
В div нет переменных - там есть (могут быть) элементы html
Переменные есть в скрипте, о чем вам так многократно и говорится.
Получили в скрипте data, разобрали их там же как угодно, сформировали массивы или что угодно - и делайте с ними что хотите. При чем тут div?

В div - код модального окна. И как получить разобранные данные из скрипта, если эти данные локального характера, и за пределы скрипта их не сунуть?

Dilettante_Pro 18.05.2016 17:46

NeilDaniels,
Цитата:

Сообщение от NeilDaniels
В div - код модального окна. И как получить разобранные данные из скрипта, если эти данные локального характера, и за пределы скрипта их не сунуть?

Скриптом какие угодно данные можно сунуть куда угодно - в любой элемент html

NeilDaniels 18.05.2016 17:50

Цитата:

Сообщение от Dilettante_Pro (Сообщение 416918)
NeilDaniels,

Скриптом какие угодно данные можно сунуть куда угодно - в любой элемент html

Ну попробую...

laimas 18.05.2016 17:56

Цитата:

Сообщение от NeilDaniels
Если только делать дополнительную проверку на случай того, что в id вдруг будет не целое число (хотя передаётся именно только число, и целое)?

(int) или (integer), это приведение значения к типу INTEGER, а ни как не получение абсолютного значения. И делается это в первую очередь в целях безопасности (читайте об инъекциях баз данных),и только во вторую очередь не делать бесполезный запрос.

Цитата:

Сообщение от NeilDaniels
Ну приму не массив как он есть, а данные в формате JSON. Как набор данных в формате JSON разобрать в блоке #receive на стороне клиента?

Я уже писал как - обходом в цикле формировать по данным html-код. Примеров этому масса и на данном форме, а конкретно ваших данных никто не знает.

Цитата:

Сообщение от NeilDaniels
Но сформировать таблицу серверным скриптом, передать её до клиента, где JS (?) формирует эту же таблицу, - а не закапризничает ли функционал вывода модального окна, где должна быть таблица (+ кнопка, по нажатию на которую пойдёт запрос на обновление строки в таблице БД)? Не проще ли на клиенте принять данные и сформировать в таблицу в модальном окне?

Вы читаете внимательно или как? Я описал два способа - один это сервер формирует ГОТОВЫЙ код html таблицы или иного нужного, а второй, это клиент сам готовит этот код вставляя в него полученный массив от сервера. Какие могут быть формировать таблицу серверным скриптом, передать её до клиента, где JS (?) формирует эту же таблицу, это вы по собственному представлению два способа в кучу, и еще задаете вопрос.

Цитата:

Сообщение от NeilDaniels
Не проще ли на клиенте принять данные и сформировать в таблицу в модальном окне?

Перечитайте внимательно написанное мною выше. А по поводу модального окна, оно такое же окно и модальное, как и бабушкина авоська является кейсом.

Цитата:

Сообщение от NeilDaniels
мне они нужны в блоке div, который лежит за пределами JS функции.

Вот это интересно - это как?

Dilettante_Pro 18.05.2016 18:07

NeilDaniels,
Цитата:

Сообщение от NeilDaniels
Ну записывал в скрипте в переменную полученные данные (просто возвращал тот же id), и ничего, за пределами скрипта переменная не видна.

Что значит не видна? Переменные никогда не видны - видны элементы html
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script>

<div id="receiv">
   <input id="testdata" type="text" value='' />
</div>
<script>
  var data = "Какие-то данные";
  $('#receiv #testdata').val(data);
</script>

NeilDaniels 20.05.2016 20:05

Dilettante_Pro,
т.е.
$.post('transmission.php', {'id' : id}, function(data){$("#receiv").html(data);}, datatype: json; );
//получили ответ в формате json
var massiv = JSON.parse(data);

и далее разбирать так? Или опять не то?
$val1 = massiv.val1;
$val2 = massiv.val2;


Часовой пояс GMT +3, время: 10:56.