572 Stimmen

Cookie nach Name abrufen

Ich habe einen Getter, um den Wert aus einem Cookie zu erhalten.

Jetzt habe ich 2 Kekse mit dem Namen shares= und mit dem Namen obligations= .

Ich möchte, dass dieser Getter nur die Werte aus dem Verpflichtungs-Cookie abruft.

Wie kann ich das tun? Also die for teilt die Daten in einzelne Werte auf und legt sie in einem Array ab.

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

44voto

allenhwkim Punkte 26366

4 Jahre später, ES6 viel einfachere Version.

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

Ich habe auch eine . um sie als Cookie Objekt. z.B., Cookie.set(name,value) y Cookie.get(name)

Dadurch werden alle Cookies gelesen, anstatt sie zu durchsuchen. Es ist in Ordnung für eine kleine Anzahl von Cookies.

38voto

nkitku Punkte 3128

Einzeiler zur Umwandlung von Cookies in JavaScript-Objekte oder Maps

Object.fromEntries(document.cookie.split('; ').map(v=>v.split(/=(.*)/s).map(decodeURIComponent)))

new Map(document.cookie.split('; ').map(v=>v.split(/=(.*)/s).map(decodeURIComponent)))

25voto

Mohyaddin Alaoddin Punkte 2325

Ich habe die Funktion geändert, die Jonathan hier zur Verfügung gestellt hat. Mit einem regulären Ausdruck können Sie einen Cookie-Wert anhand seines Namens wie folgt ermitteln:

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
}

Wird eine leere Zeichenkette zurückgegeben, bedeutet dies, dass das Cookie zwar existiert, aber keinen Wert hat; wird false zurückgegeben, existiert das Cookie nicht. Ich hoffe, das hilft.

23voto

elad gasner Punkte 477

Ein einfacher Weg :)

const cookieObj = new URLSearchParams(document.cookie.replaceAll("&", "%26").replaceAll("; ","&"))
cookieObj.get("your-cookie-name")

23voto

Lanil Marasinghe Punkte 2500

Sie können verwenden js-cookie Bibliothek zum Abrufen und Setzen von JavaScript-Cookies.

In Ihr HTML einfügen:

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

Um ein Cookie zu erstellen:

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

Um einen Cookie zu lesen:

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

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