2012-07-30 54 views
4

我正在嘗試使用Javascript爲網站更新一些cookie。它應該看看現有的Cookie是否爲特定的值。如果是這樣,請刪除cookie並將其替換。jQuery在重置它之前不刪除cookie

相反,它添加新的cookie而不刪除原來的。

這裏是我的代碼

$(document).ready(function(){ 
if(getCookie('ref') == 'na') { 
    $.cookie('ref', null, { path: '/', expires: -5 }); 
    $.cookie('ref', Base64.encode(document.referrer), { expires: 365 }); 
} 

}); 

下面是我使用的cookie庫:https://github.com/carhartl/jquery-cookie

我在做什麼錯?

回答

2

要刪除一個cookie,您必須將其設置爲與您想從中刪除它完全相同的路徑和域。在$.cookie()調用中指定path,並且如果在以前的任何代碼中指定domain,則必須在jQuery代碼中將域指定爲完全匹配。

$(document).ready(function() { 
    if(getCookie('ref') == 'na') { 
     $.cookie('ref', null, { path: '/', expires: -5 }); 
     $.cookie('ref', Base64.encode(document.referrer), {path: '/', expires: 365 }); 
    } 
}); 

然而,沒有真正的需要刪除cookie,如果你只是打算將其覆蓋:

$(document).ready(function() { 
    if(getCookie('ref') == 'na') { 
    // Just write the new cookie over the old one... 
    $.cookie('ref', Base64.encode(document.referrer), {path: '/', expires: 365 }); 
    } 
}); 
+0

我覺得路徑的問題。當我在PHP中設置cookie時,它會在域名的開頭添加一段時間。我認爲這就是JS不覆蓋它的原因。 – liz 2012-07-30 21:26:59

+0

@liz是的,當您嘗試覆蓋cookie時,路徑等域必須完全匹配。 – 2012-07-30 21:59:24