2016-08-02 76 views
0

所以,我一直在學習cookies。我一直試圖從名爲'ItemCart'的cookie中刪除我在商店購物車中使用的某個產品散列。 Cookie的格式如下:爲什麼這個cookie在分配時不會改變它的值?

ItemCart = productHash;

但是,當我嘗試刪除它時,Cookie看起來像是以某種方式拒絕該更改。這裏是JS代碼:

var cookieRemoval = document.cookie.replace("ItemCart="+this.getAttribute("data-hash")+"; ", ""); 
document.cookie = cookieRemoval; 
console.log(document.cookie + " should now be " + cookieRemoval); 

如果數據散列是頁面的當前元素的數據屬性被點擊刪除哈希中的cookie。

下面是在控制檯(避免PHP的會話垃圾)輸出:

ItemCart=EyG439ktw8hT; should now be 

這意味着替換功能做得正確,但該cookie不會改變。

這是某種程度上與不直接處理到期日有關嗎?

我真的不明白這裏發生了什麼。任何幫助表示讚賞。

回答

1

document.cookie不能這樣工作。這不是一個真正的變量,更像是special syntax

取消設置的cookie,做

document.cookie = "ItemCart=; expires=Thu, 01 Jan 1970 00:00:00 GMT;" 

這是無可否認的,很奇怪。

+0

所以,我可以保留字符串中存在的cookie的名稱,但刪除內容?我是否也應該擔心到期日?謝謝。 –

+0

不,語法'document.cookie = x' does * not * mean「set document.cookie to x」;它意味着「根據描述x設置新的cookie」。實際上,我發佈的這一行只會做一件事:過期的ItemCart。其他Cookie不受影響。正如我所提到的,這很奇怪,需要一些習慣。 –

+0

好吧,我明白了。我一直在對待它,這不是一個正常的變量。謝謝 –

相關問題