Удаление Jquery cookie с помощью плагина - PullRequest
0 голосов
/ 25 октября 2009

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

    jQuery(function($){ 

    $("a[id^='savebook-']").click(function(){
    match = this.id.match(/savebook-(\d+)/);
    savedclass = $("span#saved-"+match[1])
    savedclass.addClass("saved");
    var bookid = +match[1];

    var delim = "|"; // delimiter for books in cookie
    // get the previous cookie (if any), split it into an array
    var books = ($.cookie("books_saved") || "").split(delim);
    books.push(bookid);
    $.cookie("books_saved", books.join(delim), { expires: 7, path: '/', domain: 'example.com'});
    return false;
     });


      $("a[id^='delbook-']").click(function(){
    xmatch = this.id.xmatch(/delbook-(\d+)/);
var delim = "|";
    var delid = xmatch[1];
    var books = ($.cookie("books_saved") || "").split(delim);
    var i = null;  
     for (i = 0; books.length > i; i += 1) {  
      if (books[i].delid === delid) {  
                books_saved.slice(delid)  
            }  
     }  

    });





    });

Ответы [ 2 ]

0 голосов
/ 25 октября 2009

Файлы cookie удаляются, если для них установлено время «истекает» в прошлом.

Однако в этом коде я не вижу ничего, что пытается удалить куки. Вы, кажется, пытаетесь удалить часть строки, которая установлена ​​как cookie. (Насколько я могу судить из кода, который из-за сумасшедшего отступа совсем не так легко прочитать.)

  if (books[i].delid === delid) {  
            books_saved.slice(delid)  
        }  

Нет такой переменной, как «books_saved». Вы должны были получить ошибку JavaScript для этого. Убедитесь, что у вас есть отчеты об ошибках / консоль ошибок, поскольку без ошибок вы будете снимать в темноте.

Предположительно, вы имели в виду массив 'books', но это просто строки, а не объекты с delid.

.slice возвращает часть массива как новый массив. Это не меняет массив. Если вы хотите удалить элемент из массива, который вы хотите splice, но не имеет никакого смысла передавать ему delid. Может быть, вы имели в виду:

for (var i= books.length; i-->0;)
    if (books[i]===delid)
        books_saved.splice(i, 1);

Это удалит данный элемент из массива, но это все равно не изменит cookie, вам придется снова вызывать $.cookie, как в функции savebook.

0 голосов
/ 25 октября 2009

Даже не глядя на код - нет никакой гарантии, что cookie действительно будет удален (при запуске javascript), пока браузер не закроется. только способ гарантировать кросс-браузер удаления файлов cookie в определенный момент времени - это сделать это на сервере.

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