Как установить jquery cookie для URL с фрагментом? - PullRequest
2 голосов
/ 01 октября 2011

Я использую плагин jquery cookie https://github.com/carhartl/jquery-cookie.

Я видел эту ссылку о том, как создать URL с помощью Fragment: Приложения AJAX Crawlable

Окончательное правило URL выглядит следующим образом:

localhost/site/search#!key__searchword&page=1
localhost/site/search#!key__searchword&page=2
localhost/site/search#!key__searchword&page=3

(оригинальный URL должен выглядеть так: localhost/site/search?_escaped_fragment_key=searchword&page=1)

На каждой странице выше есть одна кнопка, которую я хочу проверить:

  • Если пользователь никогда не нажимал, он / она может сделать клик,
  • Если пользователь нажал, добавьте класс voted для запрещенного клика снова.
  • Я хочу установить cookie на 7 дней.

Мой код JavaScript:

$(document).ready(function(){
  $(".up").live('click',function() {
    $.cookie('up', 'vote', { expires: 7, path: '/', domain: 'http://127.0.0.1/site/' });
    var up = $.cookie('up');
    if (up == 'vote') {
        $(".up").addClass('voted');
    };
  });
});

В любом случае, jquery cookie не работает для меня. Как установить файл cookie jquery для URL-адреса с фрагментом?

Ответы [ 2 ]

0 голосов
/ 01 октября 2011

Фрагменты никогда не отправляются на сервер, поэтому вы не можете установить cookie для фрагмента.Вы можете установить cookie только для пути, и по умолчанию это путь до последней косой черты, которую я считаю, согласно RFC.

0 голосов
/ 01 октября 2011

Вы должны установить cookie после проверки, существует ли cookie. Базовая реализация должна выглядеть следующим образом:

$(document).ready(function(){
  $(".up").live('click',function() {
    var up = $.cookie('upvote');
    var currentLoc = location.hash;
    if (up && up.indexOf(currentLoc) == -1) {
        $(this).addClass('voted');
    };
    else {
        var saveCookie = up ? up + currentLoc : currentLoc;
        $.cookie('upvote', saveCookie, { expires: 7, path: '/', domain: 'http://127.0.0.1/site/' });
        //rest of functions
    }
  });
});

Текущее местоположение извлекается через location.hash.Если хэш местоположения уже существует в файле cookie, следует процедура Already voted.В противном случае файл cookie обновляется.

Обратите внимание, что этот сценарий будет препятствовать голосованию пользователя в течение семи дней при каждом обновлении файла cookie.Вы можете использовать хеш в качестве имени файла cookie, если вы хотите установить семидневный штраф отдельно для каждой страницы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...