我在删除特定cookie时遇到一些问题。我已经成功创建了cookie,但问题是在调用特定的del id时删除了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)
}
}
});
});
答案 0 :(得分:0)
甚至没有查看代码 - 在浏览器关闭之前,无法保证实际删除cookie(由javascript触发)。 only 方法可以保证在特定时间点跨浏览器删除cookie是让服务器执行此操作。
答案 1 :(得分:0)
通过在过去设置“过期”时删除Cookie。
但是,我在此代码中看不到任何试图删除cookie的内容。您似乎试图删除设置为cookie的字符串的一部分。 (据我从代码中可以看出,这要归功于疯狂的缩进并不容易阅读。)
if (books[i].delid === delid) {
books_saved.slice(delid)
}
没有'books_saved'这样的变量。你应该有一个JavaScript错误。确保您有错误报告/错误控制台已打开,因为没有错误,您将在黑暗中拍摄。
据推测,你的意思是“书籍”数组,但这只是字符串,而不是delid
的对象。
.slice
返回数组的一部分作为新数组。它不会改变阵列。如果你打算从你希望splice
的数组中删除一个项目,但将delid传递给它是没有任何意义的。也许你的意思是:
for (var i= books.length; i-->0;)
if (books[i]===delid)
books_saved.splice(i, 1);
这将从数组中删除给定的项目,但仍然不会更改cookie,您必须再次调用$.cookie
,就像在保存簿功能中一样。