2009-10-25 60 views
0

我在刪除特定的cookie時遇到了一些問題。我已經成功創建了cookie,但問題是在特定的del id被調用時刪除cookie。這是完整的代碼,有人可以指出我缺少什麼,如果可能的話,引導我幫我修復它?使用插件刪除Jquery 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

我正在使用這個插件http://plugins.jquery.com/project/cookie,以防萬一 – kazey 2009-10-25 05:46:31

回答

0

看也不看代碼 - 也不能保證一個cookie實際上將被刪除(當由JavaScript觸發),直到瀏覽器關閉了下來。 只有確保cookie在特定時間點被跨瀏覽器刪除的方式是讓服務器執行此操作。

+0

要清楚 - cookie被安排刪除,但是(例如)firefox 3.5不會停止發送cookie直到重新啓動。去搞清楚。 – Maas 2009-10-25 05:48:13

+0

這是由一個jQuery插件處理,並且是可能的。我只是沒有弄清楚我的代碼有什麼問題。 相關示例爲 var count = 5; (books.length> count){ \t \t books = books.slice(books.length-count); \t} 它刪除最後一個ID,這限制了cookie中數據的大小爲5.我只是沒有想出如何解決它。還有其他人嗎? – kazey 2009-10-25 06:41:38

+0

如果瀏覽器不支持cookies,它不會首先創建。 – kazey 2009-10-25 06:43:11

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就像在savebook功能。

+0

我解決了這個使用PHP,謝謝:) – kazey 2009-10-25 18:30:19