Çerezleri ada göre al


362

Bir çerez değer almak için bir alıcı var.

Şimdi isimle shares=ve isimle 2 çerezim var obligations=.

Bu alıcıyı sadece yükümlülükler çerezinden değerleri almak istiyorum.

Bunu nasıl yaparım? Böylece forverileri ayrı değerlere böler ve bir diziye koyar.

 function getCookie1() {
    // What do I have to add here to look only in the "obligations=" cookie? 
    // Because now it searches all the cookies.

    var elements = document.cookie.split('=');
    var obligations= elements[1].split('%');
    for (var i = 0; i < obligations.length - 1; i++) {
        var tmp = obligations[i].split('$');
        addProduct1(tmp[0], tmp[1], tmp[2], tmp[3]);
    }
 }

sadece bir dizi yapmak değil, bazı reçine var mı?
webLacky3rdClass

kurabiyeyi söylemem gereken bir dizi haline getirmek.
webLacky3rdClass

Hayır, bunu nasıl yapabilirim?


Bir yanıtı kabul etmek isteyebilirsiniz: sorunuz hala cevaplanmamış olarak etiketleniyor.
Soleil - Mathieu Prévot

Yanıtlar:


500

Bir dizi üzerinden yinelemeyi önleyen bir yaklaşım:

function getCookie(name) {
  const value = `; ${document.cookie}`;
  const parts = value.split(`; ${name}=`);
  if (parts.length === 2) return parts.pop().split(';').shift();
}

Bakış

Bir dizenin jetonla bölünmesi, bir dizede jeton bulunmaması durumunda bir dizeye (aynı değer) sahip bir dizi veya bir dizede jeton bulunması durumunda iki dizeye sahip bir dizi oluşturur.

İlk (sol) öğe belirteçten önceki dizeden, ikincisi (sağ) belirteçten sonraki dizeden oluşur.

(NOT: dize bir belirteçle başlıyorsa, ilk öğe boş bir dizedir)

Çerezlerin aşağıdaki gibi saklandığını göz önünde bulundurarak:

"{name}={value}; {name}={value}; ..."

belirli çerez değerini almak için, sadece "; {name} =" ve sonraki ";" den sonraki dizeyi almamız gerekir. Herhangi bir işlem yapmadan önce, çerez dizesini ";" ile başa koyarız, böylece ilk çerez dahil her çerez adı ";" ve "=" ile çevrelenir:

"; {name}={value}; {name}={value}; ..."

Şimdi önce "; {name} =" ile bölebiliriz ve bir çerez dizgisinde belirteç bulunursa (yani iki öğemiz varsa), ikinci öğenin çerez değerimizle başlayan bir dize olmasıyla sonuçlanırız. Sonra bunu bir diziden (yani pop) çıkarırız ve aynı işlemi tekrar ederiz, ancak şimdi ";" ancak bu kez gerçek jeton değerini almak için sol dizeyi (yani, shift) çekerek çıkarın.


13
@ user3132564 bunu düzenlemeyi denedi, ancak aslında bir yorum: Bu yöntem, bir çerezin son ekini aradığınızda yanlış bir değer döndürür - document.cookie değeri "FirstName = John" ise ve getCookie ("Name) "), bu adda bir çerez olmasa bile" John "geri dönersiniz. Bir çerezin adı diğerinin soneki ise de işe yaramaz - document.cookie "Name = John; LastName = Doe" ise, split ("Name =") çağrısı üç dizeli bir dizi döndürür ve yöntem ' t getCookie ("Ad") için doğru değeri döndürür.
Dennis Jaheruddin

20
Bu yanıtta uygulama hakkında uyarı: aynı adda birden fazla çerez varsa, çerez değeri döndürülmez. Örneğin, .stackexchange.com etki alanları ve programmers.stackexchange.com için stackToken adlı bir çerez varsa, getCookie ("stackToken") öğesini çağırırsanız hiçbir değer döndürülmez - parts.length değeri 2'den büyük olur. Aynı ad için (ancak farklı alan adı ve yol) tüm çerez değerlerinin aynı olacağını biliyorsanız, kabul edilen yanıtı buradan görebilirsiniz: stackoverflow.com/questions/5639346/…
jlpp

7
@DennisJaheruddin - Sonek sorunu giderilmiş gibi görünüyor.
Nathan JB

2
@ NathanJ.Brauer haklısın. Bu sorunu uzun zaman önce gidermek için güncellendi, ancak yorumlarda değil, yalnızca changelog'da not aldı.
kirlich

bir hata var. Tanımlama bilgisi "ad" ve benzeri başka bir adla altı çizilirse, IE 10+hata verir. Ör: "user": "Joe", "user_name":"Doe"
BOZ

176

Çerez üzerinde tek bir normal ifade eşleşmesi kullanmayı tercih ederim:

window.getCookie = function(name) {
  var match = document.cookie.match(new RegExp('(^| )' + name + '=([^;]+)'));
  if (match) return match[2];
}

VEYA Ayrıca bir işlev olarak kullanabiliyoruz, aşağıdaki kodu kontrol edin.

function check_cookie_name(name) 
    {
      var match = document.cookie.match(new RegExp('(^| )' + name + '=([^;]+)'));
      if (match) {
        console.log(match[2]);
      }
      else{
           console.log('--something went wrong---');
      }
   }

Yorumlarda Scott Jungwirth sayesinde geliştirildi.


11
İki çerez aynı son eke sahipse bu yanlış eşleşmelere sahip olabilir. Hem eşleşecek xyz=valueve abcxyz=valuene zaman name = xyz.
Brent Washburne

3
unescape((document.cookie.match(key + '=([^;].+?)(;|$)') || [])[1] || '');Glize / dom / Cookies
Valentin Podkamennyi'nin

19
Güncelleştirme Regex için new RegExp('(^| )' + name + '=([^;]+)')@BrentWashburne tarafından gündeme sorunu önlemek için. Ayrıca bunun için bir jsperf testi yaptım ve en yüksek oylarla cevap verdim, bu biraz üstte çıkıyor, ancak kesinlikle daha az kod ve takip edilmesi daha kolay: jsperf.com/simple-get-cookie-by-name
Scott Jungwirth

5
@ScottJungwirth Evet, ancak eşleşmeyi döndürmek için dönüş ifadesini güncellemelisiniz [2];
Joe

@ScottJungwirth Neden olmasın new RegExp('(^|;)' + name + '=([^;]+)')? nameÇizgi veya noktalı virgül, neden bir boşluk `` başlamasından arkasında?
Junlin

89

bir çerez alma komut dosyası kullanın:

function readCookie(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;
}

sonra ara:

var value = readCookie('obligations');

Ben quirksmode çerezleri sayfasından yukarıdaki kodu çaldı. okumalısın .


7
... W3schools kodunu çaldı. Vay. w3schools.com/js/js_cookies.asp
WillWam

Hey, en azından kredi verdim: p ayrıca orijinal olduğunu biliyor musun?
mkoryak

W3S'nin önce oraya koyduğunu varsaymak genellikle güvenlidir. Ctrl-c koduna sahip birçok yeniye ev sahipliği yapıyorlar.
WillWam

Aslında başka bir yol gibi görünüyor :) Quirksmode tarayıcı gariplikler için harika bir site oldu / ve orada da bir kaynak var. scottandrew.com
sunn0

w3schools'u seviyorum. muhtemelen yaşlılar için en iyi platform
Ralph Dingus

56

JQuery kullanıyorsanız bu eklentiyi kullanmanızı öneririz:

https://github.com/carhartl/jquery-cookie
https://github.com/carhartl/jquery-cookie/blob/master/jquery.cookie.js

<script type="text/javascript"
 src="//cdnjs.cloudflare.com/ajax/libs/jquery-cookie/1.4.1/jquery.cookie.min.js">

Böylece çerezleri şöyle okuyabilirsiniz:

var value = $.cookie("obligations");

Ayrıca çerez yazabilirsiniz:

$.cookie('obligations', 'new_value');
$.cookie('obligations', 'new_value', { expires: 14, path: '/' });

Çerezi sil:

$.removeCookie('obligations');

1
Bunun neden en iyi yanıta oy verilmediğinden emin değilim. Evet onun jQuery ve değil javascript ama aynı zamanda öyle !!
Cozzbie

21
@Cozzbie muhtemelen bir çerez değeri getirmek için harici bir kütüphane (böylece başka bir http isteği ekleyerek) dahil etmek gereksiz bir overkill türüdür.
rahulserver

"Uncaught ReferenceError: $" ".cookie" de tanımlanmadı hata alıyorum. Gerçi jquery.min.js ve bu cevapta önerilen kütüphane gibi tüm gerekli kütüphaneleri dahil ettim.
Adarsh ​​Singh

44

Normal bir ifade kullanan diğer bazı cevaplardaki yöntemler tüm durumları kapsamaz, özellikle:

  1. Çerez son çerez olduğunda. Bu durumda, çerez değerinden sonra noktalı virgül olmaz.
  2. Başka bir çerez adı, aranan adla bittiğinde. Örneğin, "bir" adlı çerezi arıyorsunuz ve "tamam" adlı bir çerez var.
  3. Çerez adı, bir ters eğik çizgiden önce gelmedikçe normal ifadede kullanıldığında kendileri olarak yorumlanmayan karakterler içerdiğinde.

Aşağıdaki yöntem bu durumları ele alır:

function getCookie(name) {
    function escape(s) { return s.replace(/([.*+?\^${}()|\[\]\/\\])/g, '\\$1'); };
    var match = document.cookie.match(RegExp('(?:^|;\\s*)' + escape(name) + '=([^;]*)'));
    return match ? match[1] : null;
}

nullÇerez bulunmazsa bu geri döner . Çerezin değeri boşsa, boş bir dize döndürür.

Notlar:

  1. Bu işlev, çerez adlarının büyük / küçük harfe duyarlı olduğunu varsayar .
  2. document.cookie- Bu, bir ödevin sağ tarafında göründüğünde, noktalı virgülle ayrılmış bir çerez listesi içeren bir dizeyi temsil eder ve bu da name=valueçifttir. Her noktalı virgülden sonra tek bir boşluk var gibi görünüyor.
  3. String.prototype.match()- Eşleşme nullbulunmadığında döner. Bir eşleşme bulunduğunda bir dizi döndürür ve dizindeki öğe [1]ilk eşleşen grubun değeridir.

Düzenli İfade Notları:

  1. (?:xxxx) - eşleşmeyen bir grup oluşturur.
  2. ^ - dizenin başlangıcıyla eşleşir.
  3. | - grup için alternatif kalıpları ayırır.
  4. ;\\s* - bir noktalı virgül ve ardından sıfır veya daha fazla boşluk karakteriyle eşleşir.
  5. = - bir eşittir işaretiyle eşleşir.
  6. (xxxx) - eşleşen bir grup oluşturur.
  7. [^;]*- noktalı virgül dışında sıfır veya daha fazla karakterle eşleşir. Bu, noktalı virgülle veya dizenin sonuna kadar olan karakterlerle eşleşecek, ancak bu karakterleri içermeyecek anlamına gelir.

4
Bu cevap, yanlış eşleşme olmadan tüm durumlarda çalışan en iyi ve en kısa işlevdir. Ayrıca nasıl çalıştığına dair en iyi açıklamaya da sahiptir. Ancak, kaçış işlevi açıklanmadı ve yazar çerez oluştursaydı, adın kaçması gerekip gerekmediğini bileceğini düşünürdüm. Bu yüzden daha kısa bir işlev görmeyi tercih ederim:function getCookie(name) { var match = document.cookie.match(RegExp('(?:^|;\\s*)' + name + '=([^;]*)')); return match ? match[1] : null; }
Jeff Baker

Genel bir araç olacaksa, ad doğrudan regex'e gömülemiyorsa, addan kaçmalı veya bir hata vermelidir. Uygulamalarının kısıtlamalarını bilen kişiler kaçmayı veya muhafızı kaldırabilir.
Joe Lapp

31

4 yıl sonra, ES6 daha basit bir versiyon.

function getCookie(name) {
  let cookie = {};
  document.cookie.split(';').forEach(function(el) {
    let [k,v] = el.split('=');
    cookie[k.trim()] = v;
  })
  return cookie[name];
}

Ayrıca bir nesne olarak kullanmak için bir özü oluşturdum Cookie. örneğin, Cookie.set(name,value)veCookie.get(name)

Bu, taramak yerine tüm çerezleri okur. Az sayıda çerez için sorun yok.


23

Jonathan burada sağlanan işlevi değiştirdik, düzenli ifade kullanarak böyle bir çerez değeri adıyla alabilirsiniz:

function getCookie(name){
    var pattern = RegExp(name + "=.[^;]*")
    var matched = document.cookie.match(pattern)
    if(matched){
        var cookie = matched[0].split('=')
        return cookie[1]
    }
    return false
}

Boş dize döndürürse, çerezin var olduğu ancak değerinin olmadığı anlamına gelir; yanlış döndürürse çerez mevcut değildir. Umarım bu yardımcı olur.


Sadece merak ettiniz, neden var3. hatta kullanmadınız ? matched = ...
Victorio Berra

Bunun için üzgünüm, yazmayı unuttum.
Mohyaddin Alaoddin

14

İşte herhangi bir harici lib'e ihtiyaç duymadan belirli bir isme sahip bir çerez almak için bir astar:

var cookie = ("; "+document.cookie).split("; YOUR_COOKIE_NAME=").pop().split(";").shift();

Bu cevap kirlich'in parlak çözümüne dayanmaktadır . Bu çözümün tek uzlaşması, çerez mevcut olmadığında boş bir dize alacağınızdır. Çoğu durumda, bu bir anlaşma kırıcı olmamalıdır.


10

Bunun eski bir soru olduğunu biliyorum ama bu problemle de karşılaştım. Sadece kayıt için, geliştiriciler mozilla web sayfasında küçük bir API var .

Yoy, sadece JS kullanarak herhangi bir çerezi isme göre alabilir. Kod da temiz IMHO (uzun çizgi hariç, kolayca düzeltebilirsiniz eminim).

function getCookie(sKey) {
    if (!sKey) { return null; }
    return decodeURIComponent(document.cookie.replace(new RegExp("(?:(?:^|.*;)\\s*" + encodeURIComponent(sKey).replace(/[\-\.\+\*]/g, "\\$&") + "\\s*\\=\\s*([^;]*).*$)|^.*$"), "$1")) || null;
}

Yorumlarda belirtildiği gibi, bu yöntemin anahtar ve değerin encodeURIComponent () kullanılarak kodlandığını varsaydığını unutmayın. Çerezin anahtarı ve değeri kodlanmamışsa decode & encodeURIComponent () öğesini kaldırın.


1
Bu yöntemin, çerez adı ve değerinin her ikisinin encodeURIComponent()de çerez ayarlandığında kullanılarak kodlandığını varsaydığını unutmayın; bu, çerez ayarlamak için tamamlayıcı işlevini kullanırsanız geçerli olur, ancak her zaman böyle olmayabilir. testi
John S

@JohnS Sadece decodeURIComponent'i kaldırabiliriz, değil mi? (Kurabiyeyi ayarlamak için kullanmasaydık?) Hala işe yarar mı?
NiCk Newman

Evet, sadece decodeURI'yi kaldırdım ve bu normal ifade bir canavar. Teşekkürler Marc, oy verdi!
NiCk Newman

10

Sen kullanabilirsiniz js-cookie almak için kütüphane ve JavaScript çerezler ayarlayabilir.

HTML'nize ekleyin:

<script src="https://cdn.jsdelivr.net/npm/js-cookie@2/src/js.cookie.min.js"></script>

Çerez oluşturmak için:

Cookies.set('name', 'value');

Bir Çerez okumak için:

Cookies.get('name'); // => 'value'

8

İşte oldukça kısa bir versiyon

 function getCookie(n) {
    let a = `; ${document.cookie}`.match(`;\\s*${n}=([^;]+)`);
    return a ? a[1] : '';
}

Normal ifadeyi oluşturmak için ES6'nın şablon dizelerini kullandığımı unutmayın.


2
Şimdiden en iyi cevap. ES6 özelliklerini kullanır. 2017 ve insanlar hala birleştirmek için kullanıyor var, +vb. -.- '
Elias Soares

@EliasSoares Kullanmanın sorunu nedir var?
mrReiha


Sorun değil, ama let kullanmak birçok durumda avantajları olduğu ve neredeyse hiç dezavantajı olmadığı için iyi bir uygulamadır
Elias Soares

7

kullanım object.defineProperty

Bununla çerezlere kolayca erişebilirsiniz

Object.defineProperty(window, "Cookies", {
    get: function() {
        return document.cookie.split(';').reduce(function(cookies, cookie) {
            cookies[cookie.split("=")[0]] = unescape(cookie.split("=")[1]);
            return cookies
        }, {});
    }
});

Şu andan itibaren şunları yapabilirsiniz:

alert( Cookies.obligations );

Bu da otomatik olarak güncellenir, bu nedenle bir çerezi Cookiesdeğiştirirseniz , de değişir.


2
Mükemmel! ancak tire (çerez adı olarak) gibi bazı karakterleri olan nesneler için çalışmaz ve bölme sırasında, nesneler ilk önce boş bir alana sahiptir, bu yüzden gidiyorum cookies[(cookie.split("=")[0]).replace(/ /g,'')] = ... Teşekkürler!!
Samuel Elh

@Samuel Elh doğru, ancak yerine (/ / g, '') yerine .trim () kullanabilirsiniz
mtizziani

7

kirlich iyi bir çözüm verdi. Ancak, benzer adlara sahip iki çerez değeri olduğunda başarısız olur, işte bu durum için basit bir düzeltme:

function getCookie(name) {
  var value = "; " + document.cookie;
  var parts = value.split("; " + name + "=");
  if (parts.length >= 2) return parts.pop().split(";").shift();
}

6

her zaman iyi çalışır:

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

function setCookie(variable, value, expires_seconds) {
    var d = new Date();
    d = new Date(d.getTime() + 1000 * expires_seconds);
    document.cookie = variable + '=' + value + '; expires=' + d.toGMTString() + ';';
}

JQuery ya da herhangi bir şey için hiçbir gereklilik. Saf eski iyi JavaScript.


6
function getCookie(name) {
    var pair = document.cookie.split('; ').find(x => x.startsWith(name+'='));
    if (pair)
       return pair.split('=')[1]
}

6

Çerez adıyla çerez al için basit işlev:

function getCookie(cn) {
    var name = cn+"=";
    var allCookie = decodeURIComponent(document.cookie).split(';');
    var cval = [];
    for(var i=0; i < allCookie.length; i++) {
        if (allCookie[i].trim().indexOf(name) == 0) {
            cval = allCookie[i].trim().split("=");
        }   
    }
    return (cval.length > 0) ? cval[1] : "";
}

6

Görünüşe göre MDN, her iki tarafta sınırlandırılmış \bbitişik ile eşleşen sözcük sınır regex karakter sınıfını hiç duymamıştır :\w+\W+

getCookie = function(name) {
    var r = document.cookie.match("\\b" + name + "=([^;]*)\\b");
    return r ? r[1] : null;
};

var obligations = getCookie('obligations');

5

Bana öyle geliyor ki, çerez anahtar / değer çiftlerini bir diziye ayırabilir ve aramanızı buna dayandırabilirsiniz:

var obligations = getCookieData("obligations");

Hangisi aşağıdakileri çalıştırır:

function getCookieData( name ) {
    var pairs = document.cookie.split("; "),
        count = pairs.length, parts; 
    while ( count-- ) {
        parts = pairs[count].split("=");
        if ( parts[0] === name )
            return parts[1];
    }
    return false;
}

Keman: http://jsfiddle.net/qFmPc/

Ya da muhtemelen aşağıdakiler bile olabilir:

function getCookieData( name ) {
    var patrn = new RegExp( "^" + name + "=(.*?);" ),
        patr2 = new RegExp( " " + name + "=(.*?);" );
    if ( match = (document.cookie.match(patrn) || document.cookie.match(patr2)) )
        return match[1];
    return false;
}

1
document.cookie.indexOf (name) kullanmak ve karşılaştırmak için bir yöntem var mı?

@AndrejHefner Yine de, bu alt dizelerle eşleşebilir. Eğer "foobar" ve "bar" adında bir çerez adınız varsa, "foobar" daki "bar" ı "bar" anahtarıyla karıştırabilirsiniz.
Sampson

@AndrejHefner Lütfen dizeyi bir eşleşme olup olmadığını kontrol ettiği için daha hızlı olması gereken sonraki yönteme bakın.
Sampson

1
İkinci yöntem, her zaman bir arama aradığından son çerez değerini bulamayacağı bir hata içerir; sonunda. Düzeltme versiyonu:function getCookieData( name ) { var patrn = new RegExp( "(?:^| )" + name + "=(.*?)(?:;|$)" ); if ( match = (document.cookie.match(patrn) )) return match[1]; return false; }
Oz Solomon

5

Projelerimde çerezlere ada göre erişmek için aşağıdaki işlevi kullanıyorum

function getCookie(cookie) {
    return document.cookie.split(';').reduce(function(prev, c) {
        var arr = c.split('=');
        return (arr[0].trim() === cookie) ? arr[1] : prev;
    }, undefined);
}

4

Sadece bir çerez olup olmadığını kontrol etmeniz gerekiyorsa, bunu basit yapın:

document.cookie.split('logged=true').length == 2

eğer çerez günlüğe kaydedilir = true varsa, 1 değilse 2 alırsınız.

loged = true - bunu size çerez adı = değer veya yalnızca bir ad olarak değiştirin


1
.indexOf() >= 0Bunun yerine kullanmak daha kolay okunamaz mı?
Vic Seedoubleyew

3

Çerez almak için burada güzel cevaplar var, Ancak burada kendi çözümüm:

function getcookie(cookiename){
var cookiestring  = document.cookie;
var cookiearray = cookiestring.split(';');
for(var i =0 ; i < cookiearray.length ; ++i){ 
    if(cookiearray[i].trim().match('^'+cookiename+'=')){ 
        return cookiearray[i].replace(`${cookiename}=`,'').trim();
    }
} return null;
}

kullanım: `

     getcookie('session_id');
   // gets cookie with name session_id

3

javascript tarafından ayarlandı

document.cookie = 'cookiename=tesing';

jquery-cookie eklentisi ile jquery tarafından alın

var value = $.cookie("cookiename");

alert(value);

@cytsunny - bunun için jquery çerez eklentisine sahip olmanız gerekir.
Alex Standiford

Vay be .... daha önce ne önemli bir bilgi eksik .... Ama sağladığınız bağlantıdan, kütüphane sahibi onlar daha iyi jquery bağımlılığı kaldırmak karar verdi görünüyor.
cytsunny


2

Benim çözümüm şudur:

function getCookieValue(cookieName) {
    var ca = document.cookie.split('; ');
    return _.find(ca, function (cookie) {
        return cookie.indexOf(cookieName) === 0;
    });
}

Bu işlev Underscorejs _.find işlevini kullanır. Çerez adı yoksa tanımsız olarak döner


2

Ben bu şekilde yaptım. böylece değerleri ayırmak için erişilecek bir nesne olsun.

var cookies=getCookieVal(mycookie);
alert(cookies.mykey);
function getCookieVal(parent) {
            var cookievalue = $.cookie(parent).split('&');
            var obj = {};
            $.each(cookievalue, function (i, v) {
                var key = v.substr(0, v.indexOf("="));
                var val = v.substr(v.indexOf("=") + 1, v.length);

                obj[key] = val;

            });
            return obj;
        }  

1

Mevcut çerezleri bulmak için işlevsel bir yaklaşım. Bir dizi döndürür, böylece aynı adda birden çok örneği destekler. Kısmi anahtar eşleşmesini desteklemez, ancak filtredeki === ifadesini normal ifadeyle değiştirmek önemsizdir.

function getCookie(needle) {
    return document.cookie.split(';').map(function(cookiestring) {
        cs = cookiestring.trim().split('=');

        if(cs.length === 2) {
            return {'name' : cs[0], 'value' : cs[1]};
        } else {
            return {'name' : '', 'value' : ''};
        }
    })
    .filter(function(cookieObject) { 
        return (cookieObject.name === needle);
    });
}

1

Sadece aşağıdaki işlevi kullanın (saf bir javascript kodu)

const getCookie = (name) => {
 const cookies = Object.assign({}, ...document.cookie.split('; ').map(cookie => {
    const name = cookie.split('=')[0];
    const value = cookie.split('=')[1];

    return {[name]: value};
  }));

  return cookies[name];
};

1

Çerez ismine göre al, sadece çerez ismini aşağıdaki fonksiyona ilet

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

0

Aşağıdaki işlev key-value, gerekli çerezin bir çiftini döndürecektir ; burada keyçerez adı ve çerezin valuedeğeri olacaktır.

/**
 * Returns cookie key-value pair
 */
var getCookieByName = function(name) {
    var result = ['-1','-1'];
    if(name) {
        var cookieList = document.cookie.split(';');
        result = $.grep(cookieList,function(cookie) { 
            cookie = cookie.split('=')[0];
            return cookie == name;
        });
    }
    return result;
};

0

Çerezler örneği: örnek JS:

document.cookies = {
   create : function(key, value, time){
     if (time) {
         var date = new Date();
         date.setTime(date.getTime()+(time*24*60*60*1000));
         var expires = "; expires="+date.toGMTString();
     }
     else var expires = "";
     document.cookie = key+"="+value+expires+"; path=/";
   },
   erase : function(key){
     this.create(key,"",-1);
   },
   read : function(key){
     var keyX = key + "=";
     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(keyX) == 0) return   c.substring(keyX.length,c.length);
     }
     return null;
   }
}

Dizileri ve nesneleri json veya xml ile depolama

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.