2013-10-19 38 views
12

我想要做的是當用戶訪問頁面test.html時,從他以前訪問過的頁面中刪除cookie,如test1.html,test2.html等,並設置新的cookie 。使用jquery刪除所有Cookie並設置新的

有沒有一種更簡單的方法來刪除所有以前設置的cookie一次(我有100個頁面,每次一個一個地申報)與jQuery的?

我不知道任何其他方式,除了通過一個刪除一個,然後設置新:

$.cookie('test1', 'test1', { expires: -1, path: '/' });//deleting cookies from test1.html 
$.cookie('test2', 'test2', { expires: -1, path: '/' });//deleting cookies from test2.html 

$.cookie('test', 'test', { expires: 30, path: '/' });//setting new cookies 

感謝

回答

19

jquery-cookie採取規格:

1)您致電$ .cookie( )應該返回當前頁面上的所有cookie。
2)只是遍歷並如下刪除:

var cookies = $.cookie(); 
for(var cookie in cookies) { 
    $.removeCookie(cookie); 
} 

注:刪除cookie時,你必須傳遞一個用來設置cookie完全相同的路徑,域和安全選項,除非你」重新依靠默認的選項。

+0

感謝you..this我們不再維護,替代工作對我來說.. – yas

+0

但我有一個關於你的注意的問題。我只是複製粘貼,它爲我工作,但你說我必須傳遞完全相同的路徑,域和安全選項用於設置cookie。這使我困惑。因爲我要求一個解決方案來一次刪除所有的cookies。 – yas

+0

當出於瀏覽器安全原因修改/刪除Cookie時,您必須傳遞正確的憑證。這主要是因爲你不打擾頁面上的其他方餅乾。例如,如果您正在使用yahoo.com上的小工具並決定刪除所有Cookie,則不會影響頁面上的其他小工具,除非他們使用相同的憑據。通常開發人員使用相同的設置來設置他們的所有頁面cookie,所以這種方法應該適用於大多數用例。 – megawac

6
var cookies = document.cookie.split(";"); 
for(var i=0; i < cookies.length; i++) { 
    var equals = cookies[i].indexOf("="); 
    var name = equals > -1 ? cookies[i].substr(0, equals) : cookies[i]; 
    document.cookie = name + "=;expires=Thu, 01 Jan 1970 00:00:00 GMT"; 
} 

從問題How to delete all cookies with jquery