JQuery සමඟ කුකියක් සකසන්නේ / සකසන්නේ කෙසේද?


1256

මම කොහොමද jQuery භාවිතා කුකීස් සැකසීම හා ශූන්යය නැහැ, උදාහරණයක් නම් කුකී නිර්මාණය testකිරීමට සහ අගය තබා 1?

Answers:


1776

2019 අප්‍රේල් යාවත්කාලීන කරන්න

කුකී කියවීම / හැසිරවීම සඳහා jQuery අවශ්‍ය නොවේ, එබැවින් මුල් පිළිතුර පහත භාවිතා නොකරන්න.

ඒ වෙනුවට https://github.com/js-cookie/js-cookie වෙත ගොස් jQuery මත රඳා නොපවතින පුස්තකාලය භාවිතා කරන්න.

මූලික උදාහරණ:

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

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

වැඩි විස්තර සඳහා ගිතුබ්හි ඇති ලියකියවිලි බලන්න.


ප්ලගිනය බලන්න:

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 අප්‍රේල්):

පහත දැක්වෙන අදහස් වල දක්වා ඇති පරිදි, මුල් ප්ලගිනය මත වැඩ කළ කණ්ඩායම නව ව්‍යාපෘතියක ( https://github.com/js-cookie/js-cookie ) jQuery යැපීම ඉවත් කර ඇති අතර එමඟින් එකම ක්‍රියාකාරීත්වය සහ සාමාන්‍ය වාක්‍ය ඛණ්ඩය ඇත. jQuery අනුවාදය. පෙනෙන විදිහට මුල් ප්ලගිනය කොතැනකවත් යන්නේ නැත.


1
change .cookie ('foo', null) භාවිතා කරමින් කුකියක් මකා දැමීම සඳහා "re .removeCookie ('foo') දැන් ඉවත් කර ඇත"
බොග්ඩන්

69
Az කසාර් මම පැය 6 ක් ගත කළා, විවේකයක් නැහැ. මම අද උදේ ගැටලුව තේරුම් ගත්තා. මම මෙය දුරකථන ගැප් සමඟ භාවිතා කරමි, වෙබ් අඩවියේ එය කිසිදු ගැටළුවක් නොමැතිව ක්‍රියා කරයි, නමුත් උපාංගයේ, ඔබ JSON ඇති කුකිය ලබා ගැනීමට උත්සාහ කරන විට, එය දැනටමත් වස්තුවකි, එබැවින් ඔබ එය JSON.Parse කිරීමට උත්සාහ කරන්නේ නම්, එය JSON විග්‍රහ කිරීමේ දෝෂයක් ලබා දෙනු ඇත. JSON.parse කරන්න "if typeof x == 'string' සමඟ එය විසඳා ගන්න, නැතිනම් වස්තුව භාවිතා කරන්න. සියලු වැරදි ස්ථානවල වැරැද්ද සොයන පැය 6 යි
ඇන්ඩ්‍රි ක්‍රිස්ටියන් ප්‍රොඩාන්

11
කුකිය ඉවත් කිරීමේදී, ඔබ මුලින් කුකිය $.removeCookie('nameofcookie', { path: '/' });
සැකසූ ආකාරයටම මාර්ගයම

30
එය 2015 වන අතර මෙම පිළිතුරෙන් අපට තවමත් jquery-cookie ගබඩාවේ සතියකට 2k කට වඩා සුවිශේෂී ජයග්‍රහණ ලැබෙමින් පවතී. එයින් අපට ඉගෙන ගත හැකි කරුණු කිහිපයක්: 1. කුකීස් ඉක්මනින් මිය නොයනු ඇත. 2. මිනිසුන් තවමත් "ලෝකය බේරා ගැනීම සඳහා jquery ප්ලගිනයක්" සඳහා ගූගල් කරති. කුකීස් හැසිරවීමට jQuery අවශ්‍ය නොවේ, jquery-cookie js-cookie ( github.com/js-cookie/js-cookie ) ලෙස නම් කර ඇති අතර jquery යැපීම 1.5.0 අනුවාදයේ විකල්පයක් බවට පත් කරන ලදි. සිත්ගන්නාසුලු දේවල් රාශියක් සහිත 2.0.0 අනුවාදයක් ඇත, එය සොයා බලා දායක වීම වටී, thx!
ෆැග්නර් බ්‍රැක්

2
Az කසාර් අපි එය භෞතිකව ගෙනයාමට සැලසුම් නොකරන්නෙමු, ප්‍රභවයන් කිහිපයකින් එම URL වෙත සැලකිය යුතු ප්‍රමාණයේ ගමනාගමනයක් ඇති අතර ක්ලවුස් යනු "jquery-cookie" නාම අවකාශයේ හිමිකරු වේ. ඕනෑම වේලාවක එම URL එක නැතිවී යාම ගැන කරදර විය යුතු නැත. නමුත් තවමත්, යාවත්කාලීන කිරීම් සඳහා නව ගබඩාව නැරඹීම ආරම්භ කිරීමට මම සියලු දෙනා උනන්දු කරවන්නෙමි.
ෆැග්නර් බ්‍රැක්

431

විශේෂයෙන් කුකී හැසිරවීමට 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 කුකියේ හොඳ දෙය නම් එය දත්ත වලින් ගැලවීමයි
Svetoslav Marinov

2
ord ලෝර්ඩ්ස්පේස් - පිළිවෙලින් කුකී අගය ලිවීමට / ලබා ගැනීමට window.escape / unescape හි අගය ඔතා තබන්න :)
රස් කැම්

46
වඩා හොඳ කුකී කේතය මෙහි සොයා ගත හැකි ය: developer.mozilla.org/en/DOM/document.cookie
ස`දහා SDC

3
jQuery කුකී ප්ලගිනය වඩාත් සරලයි
brauliobo

1
පැන යාම හෝ බේරීම වෙනුවට ඔබට encodeURI හෝ decodeURI භාවිතා කළ හැකිය
රොඩිස්ලාව් මෝල්ඩෝවන්

147
<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 ක් සඳහා අභිරුචිකරණය කරන්න හෝ ඔබට 365 කළ හැකිය
විග්නේෂ් පිචමානි

1
හොඳ කාර්යයන් ... නමුත් ඒවා ලේඛනයක ඇතුළත් වන්නේ ඇයි?
Dss

1
මෙම එවැනි ලෙස, ASCII පරාසයක පිටත ඕනෑම අක්ෂර සඳහා සෆාරි හෝ IE වැඩ යන්නේ නැත é, ආදිය එසේම, මෙම කුකිය-නම හෝ කුකී අගය කිරීමට ඉඩ නොදෙන බව සමහර විශේෂ අක්ෂර සඳහා වැඩ කිරීමට යන්නේ නැහැ. මම පහත සඳහන් නිර්දේශය නිර්දේශ කරමි: tools.ietf.org/html/rfc6265
ෆැග්නර්

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(",");

එවිට, කුකිය නොපවතින්නේ නම්, නිදොස් කරන්නා ". කුකී ශ්‍රිතයක් නොවේ" වැනි උදව්වක් නොලැබේ.

සෑම විටම පළමුව ප්‍රකාශ කරන්න, පසුව ශුන්‍යය පරීක්ෂා කිරීමෙන් පසුව භේදය කරන්න. මෙවැනි:

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 ('cookieStore')) {var data = JSON.parse ($. කුකී ("කුකීස්ටෝර්")); // විවිධ පිටුවල පැටවීමේ පිටුව හමු නොවූ විට text ('# නම') පෙළ (දත්ත [0]); text ('# ලිපිනය'). පෙළ (දත්ත [1]); }
මොහොමඩ් ජාවඩ්

5

ඔබ Mozilla වෙබ් අඩවිය පුස්තකාලය භාවිතා කළ හැකි මෙහි

ඔබට මේ වගේ කුකීස් සැකසීමට සහ ලබා ගැනීමට හැකි වනු ඇත

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>

GetTime () අසල ඔබ "අගය" එකතු කළ යුතුය; නැතිනම් කුකිය වහාම කල් ඉකුත් වේ :)


2
"අගය" නූලක් විය හැකිය. ප්‍රශ්නයේදී ඔහු උදාහරණයක් ලෙස 1 භාවිතා කරයි. අගය විය යුත්තේ යතුර සමාන වන අතර කුකී කල් ඉකුත්වීමට පෙර දිනවල දිග නොවේ. අගය "foo" ලෙස සම්මත කළහොත් ඔබේ අනුවාදය බිඳ වැටෙනු ඇත.
පීටර්

1

විග්නේෂ් පිචමානිගේ පිළිතුර සරලම හා පිරිසිදු බව මම සිතුවෙමි . කල් ඉකුත්වීමට දින ගණන නියම කිරීමට ඔහුට ඇති හැකියාව එකතු කිරීම:

සංස්කරණය කරන්න: දින අංකයක් සකසා නොමැති නම් 'කිසි විටෙකත් කල් ඉකුත් නොවේ' යන විකල්පය ද එක් කරන ලදි

        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, ලස්සන, පිරිසිදු හා සරල ය.



By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.