Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   coocies устанавливается через раз (https://javascript.ru/forum/jquery/21082-coocies-ustanavlivaetsya-cherez-raz.html)

Serg_pnz 28.08.2011 07:33

coocies устанавливается через раз
 
Никак не пойму, почему кука через раз устанавливается. При чем установив куку я тут же её запрашиваю - вроде все данные на месте, обновляю страницу - половины нет. Отчего так происходит?

var tocoo = new Object();

//mz - массив артикул-количество
				var mz = $.parseJSON($.cookie('astea_b'));
				if ( mz!=null ) {
					for(var item in mz) {
						var value = mz[item];
						eval ('tocoo.'+item+'='+value);
					}
				}

//добавляем в массив новый товар с артикулом art
				eval ('tocoo.'+art+'=50');
				var jsonText = JSON.stringify(tocoo);
				$.cookie( 'astea_b',  jsonText);

//манипуляции с кнопкой
				$('#'+art).css({'cursor':'default', 'background-position':'right bottom'});
				$('#'+art).parent().css({'cursor':'default', 'background-position':'left bottom'});

				alert('товар заказан');

//запрашиваю и вывожу в алерт массив
				pre($.parseJSON($.cookie('astea_b')))

ваый 28.08.2011 10:43

Несколько замечаний по коду.

1. Рекомендуется вместо var tocoo = new Object(); писать var tocoo = {};
Использование литералов, короче и удобнее.

2. eval ('tocoo.'+item+'='+value)
Использование eval тут неоправданно. Надо:
for (var item in mz) {
    tocoo[item] = mz[item];
}
3.
$('#'+art).css({'cursor':'default', 'background-position':'right bottom'});
$('#'+art).parent().css({'cursor':'default', 'background-position':'left bottom'});

Это дурная практика, поскольку это делается на CSS. Это не работа для Javascript.

А что в document.cookie после установки и после обновления страницы?

Serg_pnz 28.08.2011 12:47

Спасибо за замечания!
По поводу глюка - перезагрузил сервер и вроде всё исправилось... Хз, короче.


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