Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #21 (permalink)  
Старый 20.02.2014, 16:03
Аватар для jtjt1010
Интересующийся
Отправить личное сообщение для jtjt1010 Посмотреть профиль Найти все сообщения от jtjt1010
 
Регистрация: 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 был приведен сходу, для примера.
Ответить с цитированием
  #22 (permalink)  
Старый 20.02.2014, 16:12
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 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);

Юзайте. Получится именно как в последнем примере. В запросе регулируйте количество полей, конкатенацию, типы и все такое.
Ответить с цитированием
  #23 (permalink)  
Старый 20.02.2014, 16:14
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 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');
Ответить с цитированием
  #24 (permalink)  
Старый 20.02.2014, 16:14
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 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);
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #25 (permalink)  
Старый 20.02.2014, 16:43
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 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.
Ответить с цитированием
  #26 (permalink)  
Старый 20.02.2014, 16:48
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 23.10.2010
Сообщений: 2,718

Более того, грузить заранее может и не надо ничего кроме этих id. По ним как два пальца загрузить обширную строку со всем барахлом и тут же ее вставить куда надо.

Тфу блин, а же и рассуждал в парадигме аякса со всеми этими заголовками.

Последний раз редактировалось kostyanet, 20.02.2014 в 16:51.
Ответить с цитированием
  #27 (permalink)  
Старый 20.02.2014, 16:58
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 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.
Ответить с цитированием
  #28 (permalink)  
Старый 20.02.2014, 17:10
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 23.10.2010
Сообщений: 2,718

Да, тут я подумал прототипирование бы пригодилось. Табличную структуру засунуть в геттер и будет лепота.
Ответить с цитированием
  #29 (permalink)  
Старый 20.02.2014, 17:31
Аватар для jtjt1010
Интересующийся
Отправить личное сообщение для jtjt1010 Посмотреть профиль Найти все сообщения от jtjt1010
 
Регистрация: 10.02.2014
Сообщений: 14

Сообщение от danik.js
Вот это - другое дело:
Вот за это спасибо! То что надо.
Ответить с цитированием
  #30 (permalink)  
Старый 20.02.2014, 17:35
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,121

kostyanet,
а лаконично по делу и без жаргона слабо?
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Доступ к родительскому элементу по дочернему Кирюха =) jQuery 24 13.06.2018 12:22
Доступ к объекту массива Fronnt Общие вопросы Javascript 6 07.10.2013 23:04
Доступ к элементу по имени переменной sanyomix Общие вопросы Javascript 2 28.12.2012 11:31
Выборка((( получить доступ к дочернему элементу denfer12 Общие вопросы Javascript 1 13.08.2012 15:46
Получить доступ к элементу полученному через ajax Neokortex jQuery 10 14.01.2011 16:27