Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 31.05.2010, 00:04
Профессор
Отправить личное сообщение для FRIE Посмотреть профиль Найти все сообщения от FRIE
 
Регистрация: 25.02.2010
Сообщений: 218

Как создать многомерный массив
function AddToCart(id,price,show_tovar,pr) {
	
	var myArr = [id,price, show_tovar, pr];
	 $.cookie("tovar", myArr);
	 var str = $.cookie("tovar");
    alert(str);
}

В скрипт приходят 4 переменные , я загоняю их в массив , а массив загоняю в куку, и теперь если у меня летит новая партия из четырех переменных то массив myArr перезаписывается, нужно создать еще один массив в котором будут храниться другие массивы например

var myArr2=[myArr] но тогда myArr2 тоже будет перезаписываться.
Как дополнить массив чтобы создавался сначала массив myArr2[0] с индексом 0 потом myArr2[1] myArr2[2] и так далее?
Ответить с цитированием
  #2 (permalink)  
Старый 31.05.2010, 01:42
Профессор
Отправить личное сообщение для FRIE Посмотреть профиль Найти все сообщения от FRIE
 
Регистрация: 25.02.2010
Сообщений: 218

вот че намутил

function AddToCart(id,price,show_tovar,pr) {
	
	countArr=$.cookie("countArrr");          // 
	if (countArr == null)   //смотрим если нету countArr то создаем ее с цифрой 0
      countArr=0;
else
       countArr++;          // если есть то прибавляем 1
	   
	  var myArr = [id,price, show_tovar, pr]; // в myArr загоняем переменные
	  var myArr2=[];            // создаем массив myArr2
	 myArr2[countArr] = myArr;  // присваеваем ему индекс который вычислили и 
	 //массиву с уникальным индексом присваеваем значение myArr в котором 4 значения
	 $.cookie("tovar", myArr2);    //дальше загоняем в куку	
	 $.cookie("countArrr",countArr); //загоняем в куку полученный индекс 
	 var str = $.cookie("tovar");   // переменной str присваеваем значение куки

	 for (var i = 0; i<str.length; i++){ //перебираем массив
	  alert(str);
	 }
   
}


только алерт выдает ,,,,,,,,,17,500,4,4
если несколько раз понажимать то запятых будет еще больше например ,,,,,,,,,,,,,,,,,,,17,500,4,4
в чем косяк? добрые люди откликнитесь
Ответить с цитированием
  #3 (permalink)  
Старый 31.05.2010, 07:48
Аспирант
Отправить личное сообщение для haha Посмотреть профиль Найти все сообщения от haha
 
Регистрация: 02.08.2009
Сообщений: 40

переменная myArr2 должна быть внешней для этой функции, как countArr. А так она каждый раз чистая при очередном вызове функции.


var myArr2 = [];

function add2cart(a,b,c,d){
  myArr2.push([a,b,c,d]);
  $.cookie('tovar',myArr2);
  $.cookie('countArr',myArr2.length);
}
если правильно понимаю, то это должно выглядеть так.
Ответить с цитированием
  #4 (permalink)  
Старый 31.05.2010, 11:27
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

во-первых, у массива есть метод push
во-вторых, если ты хочешь сохранить предыдущие значения, значит их сначала из кук достать нужно
в-третьих, ты в курсе, что есть ограничение на размер куки? И непонятно, зачем в куках хранить что-либо, кроме id
Ответить с цитированием
  #5 (permalink)  
Старый 31.05.2010, 15:00
Профессор
Отправить личное сообщение для FRIE Посмотреть профиль Найти все сообщения от FRIE
 
Регистрация: 25.02.2010
Сообщений: 218

1. ограничение 4096 байт, интересно сколько таких массивов сможет поместить кука - 14,500,3,3 ? сколько товаров сможет максимум заказать человек ? (я не знаю поэтому это вопрос)
2. Хранить кроме id нужно цену на товар, потомучто у одного товара например кастрюльки есть 3 размера маленькая средняя и большая , а id у них 1 поэтому надо знать какая именно кастрюлька, и еще в корзине должно появиться название этой кастрюльки и цена , может я неправильно сделал тогда поправьте, тк я всегда думал что товары корзины хранятся в куках (названия цена и количество) .
3. про то что сначала достать предыдущие значения мысль хорошая спасибо
4. про push - я писал вот так myArr2.push[a,b,c,d]; и не получалось а надо было myArr2.push([a,b,c,d]); спасибо haha

если есть мысли про корзину покупателя поделитесь или ссылку на статью дайте буду очень благодарен
Ответить с цитированием
  #6 (permalink)  
Старый 31.05.2010, 15:40
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

я до сих пор не понимаю, зачем хранить id в куках. Если пользователь должен залогиниться, чтобы сделать заказ, например, тогда можно вообще без id в куках. В куках будет храниться id сессии, а на сервере в сессии будут id товаров храниться, по ним сервер сможет узнать любую необходимую информацию и сгенерировать страничку. Очевдино, предполагается возможность заказа незалогиненными пользователями, поэтому храним id не в сессии на сервере, а в куках.
Ответить с цитированием
  #7 (permalink)  
Старый 31.05.2010, 16:04
Аватар для e1f
e1f e1f вне форума
Профессор
Отправить личное сообщение для e1f Посмотреть профиль Найти все сообщения от e1f
 
Регистрация: 03.04.2009
Сообщений: 1,263

Сообщение от x-yuri Посмотреть сообщение
Очевдино, предполагается возможность заказа незалогиненными пользователями, поэтому храним id не в сессии на сервере, а в куках.
Хм, а что мешает создавать сессию для всех пользователей, не только для авторизированных? При логине записываем в сессию username. Есть username в сессии - залогинен.
Ответить с цитированием
  #8 (permalink)  
Старый 31.05.2010, 17:42
Профессор
Отправить личное сообщение для FRIE Посмотреть профиль Найти все сообщения от FRIE
 
Регистрация: 25.02.2010
Сообщений: 218

x-yuri вы правильно подумали, заказть должны мочь и не залогиненные пользователи,
e1f может быть и так, только можно ли яваскриптом создать сессию... пойду почитаю можно ли так
Ответить с цитированием
  #9 (permalink)  
Старый 31.05.2010, 18:48
Аватар для e1f
e1f e1f вне форума
Профессор
Отправить личное сообщение для e1f Посмотреть профиль Найти все сообщения от e1f
 
Регистрация: 03.04.2009
Сообщений: 1,263

FRIE, да причем тут JS вообще? Просто при получении сервером запроса типа "Добавить в корзину" и при отсутствии сессионной куки -- сессия создается новая, товар записывается туда, и в ответе приходит кука сессии. Все.
Ответить с цитированием
  #10 (permalink)  
Старый 31.05.2010, 23:38
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

Сообщение от e1f
Хм, а что мешает создавать сессию для всех пользователей, не только для авторизированных? При логине записываем в сессию username. Есть username в сессии - залогинен.
я просто думал о том, чтобы пользователь мог зайти на сайт позже и содержимое его корзины сохранилось
Ответить с цитированием
Ответ


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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подскажите, как вернуть js-скрипт массив Polkan AJAX и COMET 18 30.04.2010 23:30
Многомерный массив в json Л_Денис Общие вопросы Javascript 1 21.04.2010 21:43
как можно создать iframe со скриптами GOll Общие вопросы Javascript 2 05.05.2009 11:32
Как создать ассоциативный массив JS + CSS occlusion Общие вопросы Javascript 3 12.01.2009 09:19
как создать елемент с вложеными елементами scuter Events/DOM/Window 11 14.05.2008 16:15