2016-08-02 8 views
0

Also habe ich über Cookies gelernt. Ich habe versucht, einen bestimmten Produkt-Hash, den ich in einem Shop-Einkaufswagen verwende, aus einem Cookie mit dem Namen "ItemCart" zu entfernen. Der Cookie ist auf diese Weise formatiert:Warum ändert dieser Cookie seinen Wert nicht, wenn er zugewiesen wird?

ItemCart = productHash;

Wenn ich jedoch versuche, es zu entfernen, scheint der Cookie die Änderung irgendwie abzulehnen. Hier ist der Code in js:

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

Wo Daten-Hash ein Datenattribut des aktuellen Elements der Seite angeklickt auf die Hash-in-Cookie zu entfernen. Hier

ist die Ausgabe in der Konsole (Vermeidung von PHP-Sitzung Müll):

ItemCart=EyG439ktw8hT; should now be 

Dies bedeutet, dass die Ersetzen-Funktion richtig gemacht, aber das Cookie wird sich nicht ändern.

Ist das irgendwie nicht direkt mit dem Verfallsdatum zu tun?

Ich verstehe nicht wirklich, was hier vor sich geht. Jede Hilfe wird geschätzt.

Antwort

1

document.cookie funktioniert nicht so. Es ist keine echte Variable, eher wie special syntax.

ein Cookie unscharf zu schalten, tun

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

die zugegebenermaßen ist ziemlich seltsam.

+0

Also, ich bin in der Lage, den Namen des Cookies in der Zeichenfolge vorhanden zu lassen, aber den Inhalt zu entfernen? Und sollte ich mich auch über das Ablaufdatum Gedanken machen müssen? Vielen Dank. –

+0

Nein, die Syntax 'document.cookie = x' bedeutet * nicht *" set document.cookie to x "; es bedeutet "Setze einen neuen Cookie basierend auf Beschreibung x". In der Tat wird die Zeile, die ich gepostet habe, genau eines tun: Expire ItemCart. Andere Cookies sind nicht betroffen. Wie schon erwähnt, ist das ziemlich seltsam und gewöhnungsbedürftig. –

+0

Ok ich verstehe. Es ist keine normale Variable, wie ich es behandelt habe. Vielen Dank –