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 ?

1886voto

Alistair Evans Punkte 34072

Aktualisierung April 2019

jQuery ist nicht für das Lesen/Manipulieren von Cookies erforderlich, also verwenden Sie nicht die ursprüngliche Antwort unten.

Gehe zu https://github.com/js-cookie/js-cookie und verwenden Sie dort die Bibliothek, die nicht von jQuery abhängig ist.

Einfache Beispiele:

// Set a cookie
Cookies.set('name', 'value');

// Read the cookie
Cookies.get('name') => // => 'value'

Siehe die Dokumentation auf Github für Details.


Vor April 2019 (alt)

Siehe das Plugin:

https://github.com/carhartl/jquery-cookie

Das können Sie dann tun:

$.cookie("test", 1);

Zum Löschen:

$.removeCookie("test");

Zusätzlich können Sie einen Timeout von einer bestimmten Anzahl von Tagen (hier 10) für das Cookie festlegen:

$.cookie("test", 1, { expires : 10 });

Wenn die Option expires weggelassen wird, wird das Cookie zu einem Session-Cookie und wird beim Beenden des Browsers gelöscht.

Um alle Optionen abzudecken:

$.cookie("test", 1, {
   expires : 10,           // Expires in 10 days

   path    : '/',          // The value of the path attribute of the cookie
                           // (Default: path of page that created the cookie).

   domain  : 'jquery.com', // The value of the domain attribute of the cookie
                           // (Default: domain of page that created the cookie).

   secure  : true          // If set to true the secure attribute of the cookie
                           // will be set and the cookie transmission will
                           // require a secure protocol (defaults to false).
});

Um den Wert des Cookies zurückzulesen:

var cookieValue = $.cookie("test");

UPDATE (April 2015):

Wie in den Kommentaren unten angegeben, hat das Team, das an dem ursprünglichen Plugin gearbeitet hat, die jQuery-Abhängigkeit in einem neuen Projekt entfernt ( https://github.com/js-cookie/js-cookie ), die die gleiche Funktionalität und allgemeine Syntax wie die jQuery-Version hat. Offensichtlich ist das Original-Plugin nicht überall aber gehen.

1 Stimmen

Aus dem Changelog: "$.removeCookie('foo') zum Löschen eines Cookies, die Verwendung von $.cookie('foo', null) ist jetzt veraltet"

0 Stimmen

Das Plugin funktioniert gut, aber es speichert nur ein Sitzungscookie auf der neuesten Version von Opera ab dem 31.5.2013 (v12.15). Dauerhafte Cookies funktioniert in IE, Chrome, FF und Safari, aber nur nicht Opera.

0 Stimmen

So testen Sie, ob ein Cookie gesetzt ist: var mytest = $.cookie('nameofcookie'); <br> if (typeof mytest === "undefined") { alert("cookie mytest not set") }

451voto

Russ Cam Punkte 120837

Es ist nicht notwendig, jQuery speziell für die Manipulation von Cookies zu verwenden.

De QuirksMode (einschließlich Leerzeichen)

function createCookie(name, value, days) {
    var expires;

    if (days) {
        var date = new Date();
        date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
        expires = "; expires=" + date.toGMTString();
    } else {
        expires = "";
    }
    document.cookie = encodeURIComponent(name) + "=" + encodeURIComponent(value) + expires + "; path=/";
}

function readCookie(name) {
    var nameEQ = encodeURIComponent(name) + "=";
    var ca = document.cookie.split(';');
    for (var i = 0; i < ca.length; i++) {
        var c = ca[i];
        while (c.charAt(0) === ' ')
            c = c.substring(1, c.length);
        if (c.indexOf(nameEQ) === 0)
            return decodeURIComponent(c.substring(nameEQ.length, c.length));
    }
    return null;
}

function eraseCookie(name) {
    createCookie(name, "", -1);
}

Werfen Sie einen Blick auf

2 Stimmen

Hallo Russ, die gute Sache über jquery Cookie ist, dass es die Daten entweicht

2 Stimmen

@lordspace - Wickeln Sie den Wert einfach in window.escape/unescape ein, um den Cookie-Wert zu schreiben bzw. abzurufen :)

47 Stimmen

Einen besseren Cookie-Code finden Sie hier: developer.mozilla.org/de/DOM/document.cookie

188voto

Vignesh Pichamani Punkte 7540
<script type="text/javascript">
    function setCookie(key, value, expiry) {
        var expires = new Date();
        expires.setTime(expires.getTime() + (expiry * 24 * 60 * 60 * 1000));
        document.cookie = key + '=' + value + ';expires=' + expires.toUTCString();
    }

    function getCookie(key) {
        var keyValue = document.cookie.match('(^|;) ?' + key + '=([^;]*)(;|$)');
        return keyValue ? keyValue[2] : null;
    }

    function eraseCookie(key) {
        var keyValue = getCookie(key);
        setCookie(key, keyValue, '-1');
    }

</script>

Sie können die Cookies wie folgt setzen

setCookie('test','1','1'); //(key,value,expiry in days)

Sie können die Kekse wie folgt erhalten

getCookie('test');

Und schließlich können Sie die Kekse wie diesen hier löschen

eraseCookie('test');

Hoffentlich hilft es jemandem :)

EDITAR:

Wenn Sie das Cookie auf alle Pfade/Seiten/Verzeichnisse setzen wollen, setzen Sie das Attribut path auf das Cookie

function setCookie(key, value, expiry) {
        var expires = new Date();
        expires.setTime(expires.getTime() + (expiry * 24 * 60 * 60 * 1000));
        document.cookie = key + '=' + value + ';path=/' + ';expires=' + expires.toUTCString();
}

Danke! Vicky

1 Stimmen

60 * 1000 = 60 Sekunden 60* (60 * 1000) = 60 Minuten, also 1 Stunde 24* (60* (60 * 1000)) = 1 Tag, also 24 Stunden Hoffentlich hilft das.

1 Stimmen

1 * 24 * 60 * 60 * 1000 anpassen 1 für 1 Tag oder u können 365 tun

1 Stimmen

Gute Funktionen... Aber warum sind sie innerhalb eines document.ready-Tags?

19voto

Sie können ein hier verfügbares Plugin verwenden.

https://plugins.jquery.com/cookie/

und dann zum Schreiben eines Cookies tun $.cookie("test", 1);

um auf das gesetzte Cookie zuzugreifen, tun Sie $.cookie("test");

3 Stimmen

Es gibt eine neuere Version dieses Plugins

14voto

seanjacob Punkte 2168

Hier ist mein globales Modul, das ich verwende -

var Cookie = {   

   Create: function (name, value, days) {

       var expires = "";

        if (days) {
           var date = new Date();
           date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
           expires = "; expires=" + date.toGMTString();
       }

       document.cookie = name + "=" + value + expires + "; path=/";
   },

   Read: function (name) {

        var nameEQ = name + "=";
        var ca = document.cookie.split(";");

        for (var i = 0; i < ca.length; i++) {
            var c = ca[i];
            while (c.charAt(0) == " ") c = c.substring(1, c.length);
            if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length, c.length);
        }

        return null;
    },

    Erase: function (name) {

        Cookie.create(name, "", -1);
    }

};

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