20.02.2014, 16:03
|
|
Интересующийся
|
|
Регистрация: 10.02.2014
Сообщений: 14
|
|
Сообщение от рони
|
так чем вас неустроил этот вариант? или тайна сия велика есть
|
У тумбочки помимо цены есть еще и описание и цвет и т.д.
И организовывать данные по типу
price = {тумбочка: 100, табуретка: 50};
color = {тумбочка: 'Коричневая', табуретка: 'Черная'};
desc = {тумбочка: 'Прикроватная', табуретка: 'Кухонная'};
Как-то не удобно.
Гораздо удобней так:
prices = [{
id: 77,
name: 'тумбочка',
desc: 'Прикроватная',
color: 'Черная',
price: 900
},
{ id: 78,
name: 'Табуретка',
desc: 'Кухонная',
color:'Коричневая',
price: 400
}];
Поэтому мне надо организовать удобный доступ к этому массиву. Понятно что выбирать я буду по id. Пример c name был приведен сходу, для примера.
|
|
20.02.2014, 16:12
|
Профессор
|
|
Регистрация: 23.10.2010
Сообщений: 2,718
|
|
Сообщение от jtjt1010
|
price = {тумбочка: 100, табуретка: 50};
color = {тумбочка: 'Коричневая', табуретка: 'Черная'};
desc = {тумбочка: 'Прикроватная', табуретка: 'Кухонная'};
|
Если вы сами формируете ответ сервера то на кой что-то городить? Есть же json.
php
$r=$link->query($q);
$res=$r->fetch_assoc();
// тут православные заголовки
echo json_encode($res);
js/ajax
var row = JSON.parse(link.responsetext);
Юзайте. Получится именно как в последнем примере. В запросе регулируйте количество полей, конкатенацию, типы и все такое.
|
|
20.02.2014, 16:14
|
Профессор
|
|
Регистрация: 23.10.2010
Сообщений: 2,718
|
|
Православные заголовки
header('Cache-Control: no-cache, must-revalidate');
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
header('Content-type: application/json; charset=utf-8');
|
|
20.02.2014, 16:14
|
|
Профессор
|
|
Регистрация: 11.09.2010
Сообщений: 8,804
|
|
Сообщение от jtjt1010
|
Гораздо удобней так:
|
А чем удобней-то?
Вот это - другое дело:
var products = {
'тумбочка': {
id: 77,
desc: 'Прикроватная',
color: 'Черная',
price: 900
},
'табуретка': {
id: 78,
desc: 'Кухонная',
color:'Коричневая',
price: 400
}
};
alert(products['тумбочка'].price);
alert(products['табуретка'].color);
__________________
В личку только с интересными предложениями
|
|
20.02.2014, 16:43
|
Профессор
|
|
Регистрация: 23.10.2010
Сообщений: 2,718
|
|
Продукт идентифиуируется по id однозначно. Тумбочек может быть стопицот разных форм и размеров и цен.
То же самое, но кошерно:
Код:
|
$r=$link->query($q); // то есть какой-то запрос, в котором id непременно первой колонкой
$res=array();
while($arr=$r->fetch_assoc())
$res[$arr['id']]=array_slice($arr, 1);
// получится примерно так
$res = array(
78=>array(color=>red, price=>987);
67=>array(color=>green, price=>780);
); |
После жисона соответственно это объект где в каждой проперти по id лежит объект
var prod = products[elem.id.replace('id','')].price;
Последний раз редактировалось kostyanet, 20.02.2014 в 16:46.
|
|
20.02.2014, 16:48
|
Профессор
|
|
Регистрация: 23.10.2010
Сообщений: 2,718
|
|
Более того, грузить заранее может и не надо ничего кроме этих id. По ним как два пальца загрузить обширную строку со всем барахлом и тут же ее вставить куда надо.
Тфу блин, а же и рассуждал в парадигме аякса со всеми этими заголовками.
Последний раз редактировалось kostyanet, 20.02.2014 в 16:51.
|
|
20.02.2014, 16:58
|
Профессор
|
|
Регистрация: 23.10.2010
Сообщений: 2,718
|
|
Есть еще табличная структура, например $_FILES в нее компилятся.
var prods = {
id:[78, 35, 43],
color:['green', 'red', 'orange'],
price:[123, 456, 789]
};
Что дает? Например products.color это готовый список для select option. Если так хранится заказ то product.price - это готовый список для суммирования total'а
Адресация идеальна в циклах, директом - жопа.
index = products.id.indexOf(78);
color= products.color[index];
Можно дополнительно проиндексировать. У меня так и сделано, кстати, но на php.
Что дает? А например я получаю любую колонку по ее номеру через аякс с того же самого опупенного запроса, из которого запросы на все остальные колонки (идентификаторы) просто выкидываются, а табличная структура позволяет отгрузить результат той же продуктовой модели прямо в браузер. Кроме того трансформация (рендер) данных по колонкам гораздо эффективнее чем по строкам. Потому что на каждую колонку требуется отдельные, нередко изрядные опции. Например есть адрес сайт/tables/?p=1... туева хуча фильтров может быть, и буква j означает - идтикаты на аякс. значение j=3 означает выдай-ка всю четвертую колонку, только одну. Чпок и выдали. Юзер чпок и получил подсказку какие вообще в этой колонке могу быть уникальные значения. Потому что у него 15 страниц скажем.
Последний раз редактировалось kostyanet, 20.02.2014 в 17:09.
|
|
20.02.2014, 17:10
|
Профессор
|
|
Регистрация: 23.10.2010
Сообщений: 2,718
|
|
Да, тут я подумал прототипирование бы пригодилось. Табличную структуру засунуть в геттер и будет лепота.
|
|
20.02.2014, 17:31
|
|
Интересующийся
|
|
Регистрация: 10.02.2014
Сообщений: 14
|
|
Сообщение от danik.js
|
Вот это - другое дело:
|
Вот за это спасибо! То что надо.
|
|
20.02.2014, 17:35
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,121
|
|
kostyanet,
а лаконично по делу и без жаргона слабо?
|
|
|
|