20.05.2016, 20:15
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,990
|
|
Сообщение от NeilDaniels
|
var massiv = JSON.parse(data);
|
Это зачем, если методу указан тип принимаемых данных? Если он указан, то data уже будет равная объекту (массиву), и JSON.parse(data) совсем не нужен. Вам же писалось об этом.
Только datatype: json; у метода $.post, это ошибка, ибо объект, это {}. Пишите просто в кавычках }, 'json');, и без точки с запятой после параметра, это тоже ошибка.
Вроде бы и ссылку давал почитать, а пишите такую отсебятину, что ...
|
|
20.05.2016, 21:51
|
Аспирант
|
|
Регистрация: 18.05.2016
Сообщений: 35
|
|
laimas,
data через data.переменная или data[1], data[2] разбирать? Или как. Мозг сломал....
|
|
21.05.2016, 08:01
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,990
|
|
Если клиенту отдается индексный массив, то data[0], data[1], и т.д., причем ели это одномерный массив, а если многомерный, то обход циклом, в котором data[i][0], data[i][1], ... Если массив ассоциативный, то data.name, где name это имя поля sql-таблицы, или массив вложенный, то также в цикле.
Данные свои надо показывать, а то вам писали как делается не раз, а проку нет.
|
|
21.05.2016, 12:31
|
Аспирант
|
|
Регистрация: 22.08.2015
Сообщений: 71
|
|
NeilDaniels,
Дайте пример получаемых данных, и опишите внятно, что с ними надо сделать!
$.post("/transmission.php",{"id":id},function(data){
//допустим, data = { val1: "aaa", val2: "bbb" } - объект
for(var i in data){
alert( data[i] ); //перебираем все элементы объекта
$("#receiv #testdata").append( data[i] ); //вставляем в блок
}
//или для конкретных ключей:
var a = data['val1'];
var b = data['val2'];
alert (a+" , "+ b)
},"json");
И да, возвращаемые данные в виде объекта или массива?
|
|
21.05.2016, 13:04
|
Аспирант
|
|
Регистрация: 18.05.2016
Сообщений: 35
|
|
Alex_63, по двойному клику на строке таблицы серверному php скрипту передаётся id (номер по порядку, он ключ таблицы базы данных). Скрипт по id из нужной строки получает данные из таблицы, формирует массив, возвращает набор данных вызвавшему JS скрипту.
Возвращаемые данные - тот же id, + 11-значное число (номер накладной), 2 адреса (отправителя и получателя), описание товара, и 4-5 чисел (объём/масса груза).
Вернуть их надо в виде массива.
В $.post же массив разобрать, и передать за пределы скрипта. Из этих данных заполняется форма редактирования накладной.
Цитата:
|
В целом учебная задача такая.
Есть некая форма накладной, данные хранятся в таблице БД. Есть форма вывода данных из ТБД, есть форма добавления накладной.
По двойному клику на строке таблицы должна открываться форма редактирования накладной с уже заполненными полями. (Да, делаю через пятую точку, когда для заполнения полей формы делаю запрос к БД, а не заполняя поля напрямую из строки уже выведенной таблицы. По своим непонятным соображениям). По двойному клику передаю id строки на серверный скрипт, по запросу получаю данные из БД, и застрял на том, что не могу передать данные в div блок, в котором формируется форма редактирования (div блок изначально скрытый, рисуется через jqModal).
|
З.Ы. Так понимаю, мне этим (web, php, mysql) даже не стоит заниматься, если не могу понять, что мне надо и как это делается?
Последний раз редактировалось NeilDaniels, 21.05.2016 в 13:12.
|
|
21.05.2016, 14:26
|
Аспирант
|
|
Регистрация: 22.08.2015
Сообщений: 71
|
|
NeilDaniels,
Как-то так:
var arr = [];//назначаем переменную
(function () {
$("...").on("click",function () {
$.post("/transmission.php",{"id":id},function(data){
arr = data;// переназначаем arr
},"json");
});
function setHtml(){
if(arr.length<1)return;
var sel = $("#receiv #testdata");
var str="";
for(var i=0;i<arr.length;i++){
var L= arr[i];
if(i==0){str+="ID товара: "+L+"<br>";}
if(i==1){str+="Номер: "+L+"</br>";}
if(i==2){str+="Адрес отправителя: "+L+"<br>";}
if(i==3){str+="Адрес Получателя: "+L+"<br>";}
if(i==4){str+="Описание: "+L+"<br>";}
//ну и так далее ...
}
sel.html(str);
};
//по какому-то событию вызываем функцию setHtml(), чтобы заполнить div данными
})();
Последний раз редактировалось Alex_63, 21.05.2016 в 14:29.
|
|
21.05.2016, 15:04
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,990
|
|
Сообщение от NeilDaniels
|
Возвращаемые данные - тот же id, + 11-значное число (номер накладной), 2 адреса (отправителя и получателя), описание товара, и 4-5 чисел (объём/масса груза).
|
Зачем гадать всем? Перед операцией выдачи данных (этого массива) клиенту, прописать:
print_r($name), где $name имя массива. В отладчике будет ошибка, но в консоли можно будет увидеть ответ, в котором будет структура данных этого массива. Что давно просят - покажите свои данные, причем не обязательно весь массив, а только первый вложенный его.
|
|
21.05.2016, 16:51
|
Аспирант
|
|
Регистрация: 18.05.2016
Сообщений: 35
|
|
Alex_63,
можно data как-то иначе разобрать? Если, скажем, массив индексный, то можно заполнить новый массив из data[1], data[2] и т.д., а затем передать этот массив в div?
|
|
21.05.2016, 17:27
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,990
|
|
Вы структуру своего массива покажите в конце концов или нет?
|
|
21.05.2016, 17:59
|
Аспирант
|
|
Регистрация: 22.08.2015
Сообщений: 71
|
|
NeilDaniels,
1. Что значит - разобрать?
2. Нафиг формировать другой массив, когда есть уже массив с данными ?
3. В каком виде он должен вставляться в div ? Опишите, (просто строкой или как ? Чем не нравится мой Вариант ?
4. Как выше сказал laimas, - выложите пример массива!
|
|
|
|