Файл cookie jQuery будет немедленно сброшен — но только при первой установке

#jquery #jquery-plugins #cookies

#jquery #jquery-плагины #файлы cookie

Вопрос:

Почему нижеприведенное может сработать только после первого раза? После нажатия на пункт меню появляется нулевой cookie-файл, но каждый раз после этого он работает идеально…

Я использую плагин jquery cookies.

 $j(document).ready(function(){

$j('#menu-main-nav-menu li').each(function(index) {
    $j(this).data('sc-menu-item', index);
    })

currentPage = $j.cookie('currentPage');
        // do some stuff with the cookie value here

$j('#menu-main-nav-menu li').click(function() {
    $j.cookie('currentPage', $j(this).data('sc-menu-item'))
});

});
  

Большое, очень большое спасибо за любую помощь — я застрял!

Комментарии:

1. выведите это значение, прежде чем устанавливать файл cookie, используйте console.log($j(this).data(‘sc-menu-item’));

2. Хорошо — я понял это. человеческая ошибка. js был в порядке, но мой домен перенаправлял, что привело к тому, что файл cookie был установлен в неправильном домене с самого начала. спасибо за помощь.

Ответ №1:

наши ,

Я не думаю, что с плагином cookie что-то не так, выполните следующие способы отладки

выведите значение перед его установкой

 use console.log($j(this).data('sc-menu-item')); or alert//
  

это значение может быть null..

вышеупомянутая ошибка должна устранить проблему

Комментарии:

1. спасибо, Коби. К сожалению, это дает правильный ответ! т.е. данные элемента меню правильно считываются, а затем правильно устанавливаются в cookie-файле — они просто отключаются при загрузке следующей страницы. продолжая в том же духе, я alert () редактировал значение файла cookie сразу после этого (оно было установлено), а также непосредственно перед (document). готово — к моменту запуска на следующей странице он уже был равен null.

Ответ №2:

поместите event.preventDefault() в событие щелчка по ссылке, затем установите cookie, а затем перейдите по ссылке и посмотрите, имеет ли это значение.

Комментарии:

1. Как и должно быть, но установил ли он файл cookie? Если это произошло, значит, он работает так, как задумано, и вы можете снова запустить функцию link, выполнив перенаправление javascript.

2. а, я понимаю, что вы имеете в виду под «пересылкой вперед». Теперь я попробовал это — он действительно правильно устанавливает файл cookie (как и происходило в первую очередь — см. Мой ответ Kobe, выше). Однако он по-прежнему отключается при загрузке страницы.

3. fiddle.jshell.net/niklasvh/tJrGa/show/light по крайней мере, для меня он установлен, даже после загрузки страницы.

4. похоже, это работает, спасибо, что ускорили это. Я предполагаю, что должно быть какое-то внешнее влияние, но я не знаю, что это может быть?

Ответ №3:

Оказывается, js был в порядке. Я установил файл cookie в неправильном домене… новичок, которым я являюсь…