मैं jQuery के साथ कुकी को कैसे सेट / अनसेट करता हूं?


1243

मैं jQuery का उपयोग करके कुकी को कैसे सेट और अनसेट कर सकता हूं, उदाहरण के लिए नामित कुकी बनाएँ testऔर मान सेट करें 1?

जवाबों:


1767

अप्रैल 2019 को अपडेट करें

कुकी पढ़ने / हेरफेर के लिए jQuery की आवश्यकता नहीं है, इसलिए नीचे दिए गए मूल उत्तर का उपयोग न करें।

इसके बजाय https://github.com/js-cookie/js-cookie पर जाएं , और वहां लाइब्रेरी का उपयोग करें जो jQuery पर निर्भर नहीं करता है।

मूल उदाहरण:

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

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

विवरण के लिए github पर डॉक्स देखें।


प्लगइन देखें:

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

आप तब कर सकते हैं:

$.cookie("test", 1);

नष्ट करना:

$.removeCookie("test");

इसके अतिरिक्त, कुकी पर कुछ दिनों (10 यहाँ) की एक निश्चित समय सीमा निर्धारित करने के लिए:

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

यदि समय सीमा समाप्त होने का विकल्प छोड़ दिया जाता है, तो कुकी एक सत्र कुकी बन जाती है और ब्राउज़र से बाहर निकलने पर हटा दी जाती है।

सभी विकल्पों को कवर करने के लिए:

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

कुकी का मान वापस पढ़ने के लिए:

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

आप पथ पैरामीटर निर्दिष्ट करने की इच्छा कर सकते हैं यदि कुकी को वर्तमान पथ पर एक अलग पथ पर बनाया गया था:

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

अद्यतन (अप्रैल 2015):

जैसा कि नीचे टिप्पणी में कहा गया है, मूल प्लगइन पर काम करने वाली टीम ने एक नई परियोजना में jQuery की निर्भरता को हटा दिया है ( https://github.com/js-cookie/js-cookie ) जिसकी कार्यक्षमता और सामान्य वाक्यविन्यास समान है jQuery संस्करण। जाहिरा तौर पर मूल प्लगइन हालांकि कहीं भी नहीं जा रहा है।


1
चैंज से: "$ .removeCookie ('foo') एक कुकी को हटाने के लिए, $ .cookie ('foo', null) का उपयोग करके अब पदावनत कर दिया जाता है"
bogdan

68
@ मजार मैंने 6 घंटे बिताए, कोई विराम नहीं। मुझे आज सुबह समस्या का एहसास हुआ। मैं इसका उपयोग फोनगैप के साथ कर रहा हूं, साइट पर यह बिना किसी समस्या के काम करता है, लेकिन डिवाइस पर, जब आप उस कुकी को पुनः प्राप्त करने का प्रयास करते हैं जिसमें एक JSON है, तो यह पहले से ही एक ऑब्जेक्ट है, इसलिए यदि आप JSON.parse करने का प्रयास करते हैं, तो JSON पार्स त्रुटि देगा। इसे "if typeof x == 'string'" के साथ हल करके JSON.parse करें, अन्यथा, बस ऑब्जेक्ट का उपयोग करें। सभी गलत स्थानों पर त्रुटि की तलाश में 6 गोड्डम घंटे
आंद्रेई क्रिस्टियन प्रोडान

10
जब कुकी को निकालते हैं, तो सुनिश्चित करें कि आपने कुकी को मूल रूप से सेट करने के लिए उसी पथ पर पथ निर्धारित किया है:$.removeCookie('nameofcookie', { path: '/' });
LessQuesar

30
यह 2015 है और हम अभी भी इस उत्तर से केवल jquery-कुकी रिपॉजिटरी में प्रति सप्ताह 2k से अधिक अद्वितीय हिट प्राप्त कर रहे हैं। कुछ चीजें जो हम इससे सीख सकते हैं: 1. कुकीज़ जल्द ही मरने वाली नहीं हैं और 2. लोग अभी भी "दुनिया को बचाने के लिए jquery प्लगइन" के लिए गूगल करते हैं। कुकीज़ को संभालने के लिए jQuery आवश्यक नहीं है, jqu-कुकी का नाम बदलकर js- कुकी ( github.com/js-cookie/js-cookie ) किया जा रहा है और jquery निर्भरता को संस्करण 1.5.0 में वैकल्पिक बनाया गया है। बहुत सारे दिलचस्प सामान के साथ एक संस्करण 2.0.0 होगा, यह एक नज़र रखना और योगदान करने के लायक है, thx!
फागनर ब्रैक

2
@Kazar हम इसे भौतिक रूप से स्थानांतरित करने की योजना नहीं बना रहे हैं, कई स्रोतों से उस URL पर संपूर्ण ट्रैफ़िक की काफी मात्रा है और क्लाउस "jquery-कुकी" नामस्थान के ऐतिहासिक मालिक हैं। उस URL के जल्द ही चले जाने की चिंता करने की कोई आवश्यकता नहीं है। लेकिन फिर भी, मैं सभी को अपडेट के लिए नई रिपॉजिटरी देखना शुरू करने के लिए प्रोत्साहित करूंगा।
फाग्नर ब्रैक

429

कुकीज़ में हेरफेर करने के लिए विशेष रूप से jQuery का उपयोग करने की कोई आवश्यकता नहीं है।

से quirksmode (भागने वर्णों सहित)

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

पर एक नज़र डालें


2
हाय राइस, jquery कुकी के बारे में अच्छी बात यह है कि यह डेटा से बच जाता है
स्वेतोस्लाव मारिनोव

2
@ लॉर्डस्पेस - बस कुकी मान लिखने / पुनः प्राप्त करने के लिए window.escape / unescape में मूल्य लपेटें :)
Russ Cam

46
बेहतर कुकी कोड यहां पाया जा सकता है: developer.mozilla.org/en/DOM/document.cookie
SDC

3
jQuery के कुकी प्लगइन बहुत सरल है
brauliobo

1
भागने या अनस्केप करने के बजाय आप एनकोडेरी या डिकोड्यूरि का उपयोग कर सकते हैं
रोडीस्लाव मोल्दोवन

143
<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>

आप कुकीज़ को इस प्रकार सेट कर सकते हैं

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

आप कुकीज़ को इस प्रकार प्राप्त कर सकते हैं

getCookie('test');

और अंत में आप कुकीज़ को इस तरह मिटा सकते हैं

eraseCookie('test');

आशा है कि यह किसी की मदद करेगा :)

संपादित करें:

यदि आप कुकी को सभी पथ / पृष्ठ / निर्देशिका में सेट करना चाहते हैं तो कुकी को पथ विशेषता सेट करें

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

धन्यवाद, विक्की


1
60 * 1000 = 60 सेकंड 60 * (60 * 1000) = 60 मिनट जो 1 घंटा 24 * (60 * (60 * 1000)) = 1 दिन है जो 24 घंटे आशा है कि यह मदद करता है।
विग्नेश पिचमनी

1
1 * 24 * 60 * 60 * 1000 अनुकूलित 1 को 1 दिन के लिए या यू 365 कर सकते हैं
विग्नेश पिचमनी

1
अच्छे कार्य ... लेकिन वे एक document.ready टैग के अंदर क्यों हैं?
Dss

1
इस तरह के रूप में ASCII सीमा के बाहर कोई भी वर्ण, के लिए सफारी या IE में काम करने के लिए जा नहीं है é, आदि इसके अलावा, इस कुछ विशेष वर्ण कि कुकी नाम या कुकी-मूल्य में अनुमति नहीं है के लिए काम करने के लिए नहीं जा रहा है। मैं निम्नलिखित संदर्भ की सलाह देता हूं: tools.ietf.org/html/rfc6265
Fagner Brack

18

आप यहाँ उपलब्ध एक प्लगइन का उपयोग कर सकते हैं।

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

और फिर एक कुकी लिखने के लिए $.cookie("test", 1);

सेट कुकी का उपयोग करने के लिए $.cookie("test");


3
उस प्लगइन का एक नया संस्करण है
आंद्रेई क्रिस्टियन प्रोडन जूल

13

यहां मेरा वैश्विक मॉड्यूल है जिसका मैं उपयोग करता हूं -

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

सुनिश्चित करें कि ऐसा कुछ न करें:

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

फिर, यदि कुकी मौजूद नहीं है, तो डिबगर कुछ अनछुए संदेश लौटाएगा जैसे ".cookie not a function"।

हमेशा पहले घोषित करें, फिर अशक्त के लिए जाँच के बाद विभाजन करें। ऐशे ही:

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

नमूना कोड पूरा नहीं हुआ है। क्या यह केवल एक ही }है जो गायब है या कोड की कई लाइनें गायब हैं?
पीटर मोर्टेंसन

यह सिर्फ एक एकल} गायब है, लेकिन जाहिर है कि आपको विभाजित करने के लिए क्या करना है यह जारी रखने के लिए आपको कोड की अधिक पंक्तियों को जोड़ना होगा।
user890332

8

यहाँ आप जावास्क्रिप्ट के साथ कुकी कैसे सेट करें:

नीचे कोड https://www.w3schools.com/js/js_cookies.asp से लिया गया है

function setCookie(cname, cvalue, exdays) {
    var d = new Date();
    d.setTime(d.getTime() + (exdays*24*60*60*1000));
    var expires = "expires="+ d.toUTCString();
    document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/";
}

अब आप नीचे समारोह के साथ कुकी प्राप्त कर सकते हैं:

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

और अंत में यह है कि आप कुकी कैसे जांचें:

function checkCookie() {
    var username = getCookie("username");
    if (username != "") {
        alert("Welcome again " + username);
    } else {
        username = prompt("Please enter your name:", "");
        if (username != "" && username != null) {
            setCookie("username", username, 365);
        }
    }
}

यदि आप कुकी को हटाना चाहते हैं, तो समय सीमा समाप्त होने वाले पैरामीटर को निर्धारित तिथि पर सेट करें:

document.cookie = "username=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;";

7

आपके ब्राउज़र में सेट कुकी का एक सरल उदाहरण:

<!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>

सरल बस कॉपी / पेस्ट करें और अपने कुकी सेट करने के लिए इस कोड का उपयोग करें।


1
बस एक नोट, डिफ़ॉल्ट रूप से ब्राउज़र उनके फ़ाइलनाम के अनुसार संसाधनों को कैश करता है। इस उदाहरण में, jquery-1.9.0.min.jsफ़ाइल नाम अपडेट किए जाने पर सभी के लिए पुनः लोड किया जाएगा jquery-1.9.1.min.js, अन्यथा ब्राउज़र अपडेट की गई सामग्री की जाँच करने के लिए सर्वर से अनुरोध नहीं करेगा। यदि आप jquery.cookie.jsफ़ाइल नाम बदले बिना कोड को अपडेट करते हैं , तो यह उन ब्राउज़र में पुनः लोड नहीं किया जा सकता है जो पहले ही jquery.cookie.jsसंसाधन को कैश कर चुके हैं ।
फाग्नर ब्रैक

यदि आप एक वेबसाइट लिख रहे हैं और इसे कॉपी / पेस्ट कर रहे हैं, तो ध्यान रखें कि यदि आप jquery.cookie.jsफ़ाइल नाम बदले बिना ई-टैग का उपयोग करते हुए कैशिंग से निपटते हैं, तो संस्करण को अपडेट किए बिना यह काम नहीं करेगा ।
फाग्नर ब्रैक

if ($ .cookie ('कुकी')) {var data = JSON.parse ($ $। कुकी ("कुकीस्टोर")); // जब विभिन्न पृष्ठ में लोड पृष्ठ $ नहीं मिला ('# नाम')। पाठ (डेटा [0]); । $ ( '# पता') पाठ (डेटा [1]); }
मोहम्मद जवाद

5

आप यहां मोज़िला वेबसाइट पर लाइब्रेरी का उपयोग कर सकते हैं

आप इस तरह कुकीज़ सेट और प्राप्त कर सकेंगे

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

3

मुझे लगता है कि फ्रेशर ने हमें अच्छा तरीका दिया है, लेकिन एक गलती है:

    <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>

आपको गेटटाइम के पास "मूल्य" जोड़ना चाहिए (); अन्यथा कुकी तुरंत समाप्त हो जाएगी :)


2
"मान" एक स्ट्रिंग हो सकता है। प्रश्न में वह एक उदाहरण के रूप में 1 का उपयोग कर रहा है। मूल्य वह होना चाहिए जो कुंजी के बराबर हो, न कि कुकी समाप्त होने से पहले के दिनों में। यदि मान "फू" के रूप में पारित किया गया तो आपका संस्करण क्रैश हो जाएगा।
पीटर

1

मुझे लगा कि विग्नेश पिचमणि का जवाब सबसे सरल और साफ है। समाप्ति से पहले दिनों की संख्या निर्धारित करने की उनकी क्षमता में बस जोड़ना:

EDIT: यदि कोई दिन संख्या निर्धारित नहीं है, तो 'कभी भी समाप्त नहीं होने वाला' विकल्प भी जोड़ा जाता है

        function setCookie(key, value, days) {
            var expires = new Date();
            if (days) {
                expires.setTime(expires.getTime() + (days * 24 * 60 * 60 * 1000));
                document.cookie = key + '=' + value + ';expires=' + expires.toUTCString();
            } else {
                document.cookie = key + '=' + value + ';expires=Fri, 30 Dec 9999 23:59:59 GMT;';
            }
        }

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

कुकी सेट करें:

setCookie('myData', 1, 30); // myData=1 for 30 days. 
setCookie('myData', 1); // myData=1 'forever' (until the year 9999) 

1

मुझे पता है कि कई बेहतरीन जवाब हैं। अक्सर, मुझे केवल कुकीज़ पढ़ने की ज़रूरत होती है और मैं अतिरिक्त पुस्तकालयों को लोड करके या फ़ंक्शंस को परिभाषित करके ओवरहेड नहीं बनाना चाहता।

यहाँ कैसे जावास्क्रिप्ट की एक पंक्ति में कुकीज़ पढ़ने के लिए है । मुझे गिलहर्म रॉड्रिक्स के ब्लॉग लेख में इसका जवाब मिला :

('; '+document.cookie).split('; '+key+'=').pop().split(';').shift()

यह keyअच्छा, साफ और सरल नाम के कुकी को पढ़ता है ।


हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.