Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   разделение строки из куки на массивы (https://javascript.ru/forum/jquery/34483-razdelenie-stroki-iz-kuki-na-massivy.html)

mi.rafaylik 07.01.2013 18:42

1. Deff, jquery.cookie и в FF кириллицу нормально выводят, насчёт эскейп-последовательности не знаю.
2. Максимально длинная строка, например:
T-Shirt:размер S:цвет белый:170:4;Jeans:размер XS:цвет синий:420:2;Shoes:размер 41:цвет хаки:560:1;T-Shirt:размер M:цвет серый:150:1;Jeans:размер S:цвет чёрный:380:1;Shoes:размер 42:цвет черный:490:2;

3. без куки хм.. я бы использовал localStorage, как Вы и предложили, очень понравился вариант, но в данном случае кук вполне достаточно

Deff 07.01.2013 18:48

Цитата:

Сообщение от mi.rafaylik
1. Deff, jquery.cookie и в FF кириллицу нормально выводят,

:) Во всех бразерах ?
Цитата:

Сообщение от mi.rafaylik
3. без куки хм.. я бы использовал localStorage, как Вы и предложили, очень понравился вариант, но в данном случае кук вполне достаточно

Да использовать localStorage как куки - нет проблем - пишите с одним и тем жа ключом - полный аналог куков - но нун Нужно знать какие браузеры - иначе в старых ИЕ его еще не было( хотя есть плагин, полностью имитирующий)
суть в отправке в итоге на сервер
По второму - вопросу - судя по строке, - ИЕ 6-8 - выпадает из списка - куков -такой длины Оно не обслужит

mi.rafaylik 07.01.2013 18:48

изменив код, задачу решил вот так:
var strCookie = ''; // инициализируем пустую строку

$('div.item').each(function(){
    $(this).children('p:eq(0)').each(function(){ strCookie += $(this).html() + ":"; }); // количество характеристик всегда будет 5
    $(this).children('p:eq(1)').each(function(){ strCookie += $(this).html() + ":"; });
    $(this).children('p:eq(2)').each(function(){ strCookie += $(this).html() + ":"; });
    $(this).children('p:eq(3)').each(function(){ strCookie += $(this).html() + ":"; });
    $(this).children('p:eq(4)').each(function(){ strCookie += $(this).html() + ";"; }); // отделяем товар
});

и правильный результат:
T-Shirt:размер S:цвет белый:170:4;Jeans:размер XS:цвет синий:420:2;Shoes:размер 41:цвет хаки:560:1;

всё :)
ребята, спасибо, эта тема была интересной, я получил удовольствие и опыт )

mi.rafaylik 07.01.2013 18:51

Deff, у меня FF постоянно обновляется, т.е. я использую актуальную версию. Он правильно достаёт кириллицу с помощью jquery.cookie, насчёт более ранних версий FF не знаю

Deff 07.01.2013 18:54

Цитата:

Сообщение от mi.rafaylik
Deff, у меня FF постоянно обновляется, т.е. я использую актуальную версию

Думаю тут не в длине дело , а , jquery, оно кодирует/декодирует кирилицу - проверьте запись куков максимальной длины в ИЕ

mi.rafaylik 07.01.2013 19:04

Deff, спасибо, попробую как только на Windows попаду (я работаю на Mac OS, там нет IE, но я всегда проверяю свои коды где-нибудь в другом месте), и отпишусь о результате

jokersoft 07.01.2013 19:16

Цитата:

Сообщение от mi.rafaylik (Сообщение 225821)
$(this).children('p:eq(0)').each(function(){ strCookie += $(this).html() + ":"; }); // количество характеристик всегда будет 5

each здесь в таком случает не нужен.
Делай тогда просто так:
strCookie += $(this).children('p:eq(0)').html() + ":";

Deff 07.01.2013 19:29

Цитата:

Сообщение от mi.rafaylik
попробую как только на Windows попад

Пробу(просто записать куки и считывать их на страницу) желательно провести на реальном сайте, посколь там имеются и еще кроме ваших
чо нить типо такого (Должен быть подключен jQuery и плагин куков
<div id="Mycookie"></div>

<script type="text/javascript">
$(document).ready(function() {  
var a='T-Shirt:размер S:цвет белый:170:4;Jeans:размер XS:цвет синий:420:2;Shoes:размер 41:цвет хаки:560:1;T-Shirt:размер M:цвет серый:150:1;Jeans:размер S:цвет чёрный:380:1;Shoes:размер 42:цвет черный:490:2;';
$("#Mycookie").html($.cookie("My",a));
});
</script>

MVS 24.01.2013 01:30

Добрый..вечер!
Подскажите, как можно сохранять 10 куки в файл, я имею ввиду что если сохраняется 11-тый, то самый старый, то есть первый удаляется а на его место становится второй (вроде карусели), задача связана точно с таким случаем, но запоминать нужно всего 10 кук и крутить по кругу.
Спасибо!

дополняю примером, а то сам не понял из прочитаного чего хочу
примерно такой код для получения куки библиотекой "jquery cookie"
function runCookie() {
var a = $.cookie("cart");
var b = a.replace(/[,]/g, '').split(":");
function allItemsListConstruct (Z) {
	var str ='',zJ;
		for (var i=0; i<Z.length; i++){
			str+='<div>\n';
			zJ = Z[i].split("|");
			str+=
			'<p>'+zJ[0]+'</p>'
			;
			str+='\n</div>'
		} return str;
}
document.getElementById('st').innerHTML = allItemsListConstruct (b);
}

Задача сводиться к тому, что нужно записать куки в таком виде: 001, 002, 003, ..., 010
примерно вот так, id подставляется автоматически
<a href="javascript:cookie('+id+');">сохранить</a>
$.cookie("cart", "id");
количество записанных кук 10 шт., то есть при записи 11-той первая кука удаляется и на ее место становиться вторая и получается первой.
У меня не получается записать куки в строку и тем более недопонимаю как сделать удаление кук если их более 10 и пишем 11-тую.
Помогите реализовать такую вещь - это будет модуль последних просмотренный товаров.
Спасибо!

MVS 30.01.2013 22:25

помогите удалить
 
сделал так, код г-но, зато рабочий
function setCokii(cookie_value) { //здесь ставить куки setCokii(id);
var x,y;
x = $.cookie("history");
if(x == null) {  // если это первая
$.cookie('history', cookie_value, { expires: 7 });  
} else {
y = x.split(","); // если уже есть
// это проверка на существование куки, если уже есть - то не пишем, одинаковые не нужны
if(y[0] != cookie_value && y[1] != cookie_value && y[2] != cookie_value && y[3] != cookie_value && y[4] != cookie_value && y[5] != cookie_value && y[6] != cookie_value && y[7] != cookie_value && y[8] != cookie_value && y[9] != cookie_value) {
$.cookie('history', cookie_value+','+y, { expires: 7 });
 // если устанавливается 10 кука, то перезаписываем - нужно только 10 последних
if(y[9]) { rewriteCokii(); }  }
}
}
// функция получения и перезаписи куки
function rewriteCokii() {
var u = $.cookie("history");
var c = u.split(",");
var f = [c[0],c[1],c[2],c[3],c[4],c[5],c[6],c[7],c[8],c[9]]; // это вроде как извращение над js но по другому не смог
$.cookie('history', f, { expires: 7 });
}
// удаление всех кук "history"
function delCokii() {
$.cookie('history', null);
}

Прошу помощи не так в модернизации кода, как в том, что не могу понять как можно удалить например 4 куку, если кто может покажите примером, но и по возможности расскажите как можно привести код к нормальному виду
Спасибо!


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