Некорректная запись первых ячеек в cookie
Вложений: 3
Здравствуйте.
Скрипт последних просмотренных пользователем страниц. Добавляет id страниц в куки.
<script>
$(document).ready(function() {
var pageid = {%$page%};
var view = $.cookie('lastpage');
$.cookie('lastpage', view, { expires: 60, path: '/' });
if (!view){
view = [];
} else {
view = view.replace(/(^,)|(,$)/g, '');
var idArray = view.split(',');
if(idArray.length > 10){
idArray.shift();
view = idArray.toString();
}
}
if (view.indexOf(pageid) === -1) {
if (view) {
view += ',' + pageid;
} else {
view = '' + pageid;
}
$.cookie('lastpage', view, { expires: 60, path: '/' });
}
});
</script>
Суть проблемы, первые 2 просмотренные страницы некорректно записываются в ячейки (46 - id первой просмотренной страницы, 29 - второй, 5 - третьей): lastpage:Object :"46" lastpage:Object 46:"29" И только начиная с 3 страницы ячейки начинают записываться корректно: lastpage:Array 1:"46" 2:"29" 3:"5" length:3 Из-за некорректной записи первых двух ячеек, некоторые страницы с id: 4,6,2,9 в куки не записываеются, т.к. браузер считает что они уже записаны(просмотрены). Подскажите, пожалуйста, где я ошиблась и как исправить. |
Вы определитесь, что у вас view - массив или строка?
Строки 17-21. В каком случае else сработает? Да и не знаем мы, что такое {%$page%} и как оно вычисляется |
dasha862,
строка 17 всегда true. попробуйте if (view.length) |
dasha862,
как вариант ...
$(document).ready(function() {
var pageid = {%$page%};
var view = $.cookie('lastpage');
if (!view) {
view = [+pageid];
} else {
view = JSON.parse(view);
if (view.indexOf(+pageid) === -1) {
view.push(+pageid);
if (view.length > 10) view.shift();
}
}
view = JSON.stringify(view);
$.cookie('lastpage', view, {
expires: 60,
path: '/'
});
});
|
Цитата:
Как удалить скобки [ и ] на выходе из скрипта, чтобы осталось 4, без скобок? |
dasha862,
не осилил. |
Попробовала реплейсом убрать
view = view.replace(/[[\]]/g, ''); Но это создаёт другую проблему, записывается id только первой страницы, а остальные игнорируются. Вы правы, простым реплейсом дело не решить:) |
рони,
Решила на стороне php. Спасибо Вам огромное за готовый скрипт! |
Цитата:
var view = $.cookie('lastpage');
view = JSON.parse(view) || [];
view = view.toString();
|
Ваш код ставить перед:
$.cookie('lastpage', view, {
expires: 60,
path: '/'
});
Верно поняла? |
| Часовой пояс GMT +3, время: 22:30. |