1352 Stimmen

Wie kann ich ein Cookie mit jQuery setzen/entfernen?

Wie setze und entferne ich ein Cookie mit jQuery, zum Beispiel ein Cookie namens test und setzen Sie den Wert auf 1 ?

0voto

Slavik Meltser Punkte 8270

Der folgende Code entfernt alle Cookies innerhalb der aktuellen Domain und aller nachfolgenden Subdomains ( www.some.sub.domain.com , .some.sub.domain.com , .sub.domain.com und so weiter.).

Eine einzeilige Vanilla-JS-Version (keine Notwendigkeit für jQuery):

document.cookie.replace(/(?<=^|;).+?(?=\=|;|$)/g, name => location.hostname.split('.').reverse().reduce(domain => (domain=domain.replace(/^\.?[^.]+/, ''),document.cookie=`${name}=;max-age=0;path=/;domain=${domain}`,domain), location.hostname));

Dies ist eine lesbare Version dieser einzigen Zeile:

document.cookie.replace(
  /(?<=^|;).+?(?=\=|;|$)/g, 
  name => location.hostname
    .split(/\.(?=[^\.]+\.)/)
    .reduceRight((acc, val, i, arr) => i ? arr[i]='.'+val+acc : (arr[i]='', arr), '')
    .map(domain => document.cookie=`${name}=;max-age=0;path=/;domain=${domain}`)
);

0voto

ruffin Punkte 14815

Ich weiß, es gibt schon viele Antworten, aber hier ist eine, die es in sich hat set , get y delete alles schön vanillig und in einen globalen Bezug gesetzt:

window.cookieMonster = window.cookieMonster || 
    {
        // https://stackoverflow.com/a/25490531/1028230
        get: function (cookieName) {
            var b = document.cookie.match('(^|;)\\s*' + cookieName + '\\s*=\\s*([^;]+)');
            return b ? b.pop() : '';
        },

        delete: function (name) {
            document.cookie = '{0}=; Path=/; Expires=Thu, 01 Jan 1970 00:00:01 GMT;'
                .replace('{0}', name);
        },

        set: function (name, value) {
            document.cookie =
                '{0}={1};expires=Fri, 31 Dec 9999 23:59:59 GMT;path=/;SameSite=Lax'
                .replace('{0}', name)
                .replace('{1}', value);
        }
    };

Beachten Sie, dass die Cookie-Regex von diese Antwort auf eine Frage in einem anderen Schloss .


Testen wir es:

cookieMonster.set('chocolate', 'yes please');
cookieMonster.set('sugar', 'that too');

console.log(cookieMonster.get('chocolate'));
console.log(document.cookie);

cookieMonster.delete('chocolate');

console.log(cookieMonster.get('chocolate'));
console.log(document.cookie);

Wenn Sie vor dem Versuch keine Kekse gegessen haben, sollten Sie...

yes please
chocolate=yes please; sugar=that too

sugar=that too

Beachten Sie, dass die Kekse aus unserer Sicht nicht ganz so lange halten wie der Wärmetod des Universums, aber im Wesentlichen so lange. Sie können ziemlich leicht herausfinden, wie Sie die Daten ändern können, wenn Sie sich die Zeichenketten hier oder in anderen Antworten ansehen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X