2009-10-25 8 views
0

Je rencontre un petit problème en supprimant un cookie spécifique. J'ai créé le cookie avec succès, mais le problème est la suppression du cookie lorsqu'un identificateur spécifique a été invoqué. Ceci est le code complet, quelqu'un peut s'il vous plaît signaler ce que je suis manquant et si possible, me guider en m'aidant à le réparer?Suppression de cookie Jquery en utilisant le plugin

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) 
      } 
    } 

    }); 





    }); 
+0

J'utilise ce plugin http://plugins.jquery.com/project/cookie juste au cas – kazey

Répondre

0

Sans même le code - il n'y a aucune garantie qu'un cookie sera effectivement supprimé (lorsqu'elle est déclenchée par javascript) jusqu'à ce que le navigateur se ferme vers le bas. Le seulement façon de garantir la suppression des cookies cross-navigateur à un moment donné est d'avoir un serveur le faire.

+0

Pour être clair - le cookie est programmé pour la suppression, mais (par exemple) firefox 3.5 n'arrêtera pas d'envoyer le cookie jusqu'à ce qu'il redémarre. Allez comprendre. – Maas

+0

Ceci est géré par un plugin jquery, et oui c'est possible. Je n'ai tout simplement pas compris ce qui ne va pas avec mon code. Un échantillon pertinent est var count = 5; if (books.length> count) { \t \t books = books.slice (nombre de livres.length - nombre); Où il supprime le dernier identifiant, ce qui limite la taille des données dans le cookie à 5. Je n'ai juste pas compris comment résoudre ce problème. Quelqu'un d'autre s'il vous plaît? – kazey

+0

Si un navigateur ne supporte pas les cookies, il ne sera pas créé en premier lieu. – kazey

0

Les cookies sont supprimés en les paramétrant avec une date d'expiration dans le passé.

Cependant, je ne vois rien dans ce code qui essaie de supprimer un cookie. Vous semblez essayer d'enlever une partie d'une chaîne qui est définie en tant que cookie. (Pour autant que je peux dire à partir du code, qui, grâce à l'empreinte fou est pas du tout facile à lire.)

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

Il n'y a pas cette variable « books_saved ». Vous devriez avoir une erreur JavaScript pour cela. Assurez-vous d'avoir un rapport d'erreurs/la console d'erreur activée, car sans erreur, vous serez en train de filmer dans l'obscurité.

Vraisemblablement, vous vouliez dire le tableau 'books', mais c'est juste des chaînes, pas des objets avec delid.

.slice renvoie une partie d'un tableau en tant que nouveau tableau. Cela ne change pas le tableau. Si vous vouliez supprimer un élément du tableau, vous voulez splice, mais cela n'aurait aucun sens de lui passer un delid. Peut-être que vous vouliez dire:

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

Cela supprimera l'élément donné du tableau, mais ne peut toujours pas changer le cookie, vous devez appeler $.cookie à nouveau par la suite comme dans la fonction savebook.

+0

J'ai résolu cela en utilisant php, merci quand même :) – kazey

Questions connexes