Frage Wie setze ich ein Cookie mit jQuery?


Wie setze und lösche ich einen Cookie mit jQuery, zum Beispiel einen Cookie namens erstellen test und setze den Wert auf 1?


1073
2017-09-22 08:09


Ursprung


Antworten:


Siehe das Plugin:

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

Sie können dann tun:

$.cookie("test", 1);

Löschen:

$.removeCookie("test");

Um ein Timeout von einer bestimmten Anzahl von Tagen (10 hier) auf dem Cookie festzulegen:

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

Wenn die Option expires ausgelassen wird, wird der Cookie zu einem Sitzungscookie 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");

Sie können den Pfadparameter angeben, wenn der Cookie auf einem anderen Pfad als dem aktuellen erstellt wurde:

var cookieValue = $.cookie("test", { path: '/foo' });

UPDATE (April 2015):

Wie in den Kommentaren unten angegeben, hat das Team, das am ursprünglichen Plugin gearbeitet hat, die jQuery-Abhängigkeit in einem neuen Projekt entfernt (https://github.com/js-cookie/js-cookie) welche die gleiche Funktionalität und allgemeine Syntax wie die jQuery-Version hat. Anscheinend geht das ursprüngliche Plugin nirgendwohin.


1591
2017-09-22 08:11



Es besteht keine Notwendigkeit, jQuery insbesondere zur Manipulation von Cookies zu verwenden.

Von QuirksMode (einschließlich entkommene Charaktere)

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);
}

Sieh dir das an


393
2017-09-22 13:40



<script type="text/javascript">
        function setCookie(key, value) {
            var expires = new Date();
            expires.setTime(expires.getTime() + (1 * 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;
        }
</script>

Sie können die Cookies so einstellen, wie sie sind

setCookie('test','1');

Sie können die Cookies wie erhalten

getCookie('test');

Hoffe es wird jemandem helfen :)

BEARBEITEN:

Wenn Sie den Cookie-Pfad für die Homepage speichern möchten, tun Sie dies wie folgt

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

Vielen Dank, vicky


110
2017-09-06 07:40



Sie können ein Plugin hier verwenden ..

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

und dann ein Cookie zu schreiben $.cookie("test", 1);

auf den gesetzten Cookie zugreifen $.cookie("test");


16
2017-09-22 08:43



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);
    }

};

10
2017-10-26 09:43



Stellen Sie sicher, dass Sie Folgendes nicht tun:

var a = $.cookie("cart").split(",");

Wenn der Cookie dann nicht existiert, gibt der Debugger einige nicht hilfreiche Nachrichten wie ".cookie not a function" zurück.

Erklären Sie immer zuerst, dann machen Sie den Split nach der Überprüfung auf Null. So was:

var a = $.cookie("cart");
if (a != null) {
    var aa = a.split(",");

8
2017-09-01 15:26



Ein einfaches Beispiel für das Setzen von Cookies in Ihrem Browser:

<!doctype html>
<html>
    <head>
        <meta charset="utf-8">
        <title>jquery.cookie Test Suite</title>

        <script src="jquery-1.9.0.min.js"></script>
        <script src="jquery.cookie.js"></script>
        <script src="JSON-js-master/json.js"></script>
        <script src="JSON-js-master/json_parse.js"></script>
        <script>
            $(function() {

               if ($.cookie('cookieStore')) {
                    var data=JSON.parse($.cookie("cookieStore"));
                    $('#name').text(data[0]);
                    $('#address').text(data[1]);
              }

              $('#submit').on('click', function(){

                    var storeData = new Array();
                    storeData[0] = $('#inputName').val();
                    storeData[1] = $('#inputAddress').val();

                    $.cookie("cookieStore", JSON.stringify(storeData));
                    var data=JSON.parse($.cookie("cookieStore"));
                    $('#name').text(data[0]);
                    $('#address').text(data[1]);
              });
            });

       </script>
    </head>
    <body>
            <label for="inputName">Name</label>
            <br /> 
            <input type="text" id="inputName">
            <br />      
            <br /> 
            <label for="inputAddress">Address</label>
            <br /> 
            <input type="text" id="inputAddress">
            <br />      
            <br />   
            <input type="submit" id="submit" value="Submit" />
            <hr>    
            <p id="name"></p>
            <br />      
            <p id="address"></p>
            <br />
            <hr>  
     </body>
</html>

Einfach kopieren / einfügen und diesen Code zum Setzen Ihres Cookies verwenden.


7
2017-08-06 17:47



Sie können die Bibliothek auf der Mozilla-Website verwenden Hier 

Sie können Cookies so einstellen und erhalten

docCookies.setItem(name, value);
docCookies.getItem(name);

5
2017-08-09 19:53



Ich denke Fresher hat uns einen netten Weg gegeben, aber da ist ein Fehler:

    <script type="text/javascript">
        function setCookie(key, value) {
            var expires = new Date();
            expires.setTime(expires.getTime() + (value * 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;
        }
   </script>

Sie sollten "Wert" in der Nähe von getTime () hinzufügen; Andernfalls läuft der Cookie sofort ab :)


2
2018-06-03 15:53