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

14voto

varun sharma Punkte 877

Meine eine lineare Funktion, um den Wert Cookie durch seinen Schlüssel zu erhalten.

cookie = key=>((new RegExp((key || '=')+'=(.*?); ','gm')).exec(document.cookie+'; ') ||['',null])[1]

Aufruf der Cookie-Funktion als

cookie('some-key')

13voto

mfalade Punkte 1057

Hier ist eine ziemlich kurze Version

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

Beachten Sie, dass ich die Template-Strings von ES6 verwendet habe, um den Regex-Ausdruck zusammenzustellen.

12voto

Marc Punkte 246

Ich weiß, es ist eine alte Frage, aber ich bin auch auf dieses Problem gestoßen. Nur für das Protokoll, Es gibt eine kleine API in Entwickler mozilla-webseite .

Sie können jedes Cookie nach seinem Namen nur mit JS erhalten. Der Code ist auch sauberer IMHO (außer für die lange Zeile, die ich bin sicher, dass Sie leicht beheben können).

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

Wie in den Kommentaren angegeben, ist zu beachten, dass diese Methode davon ausgeht, dass der Schlüssel und der Wert mit encodeURIComponent() kodiert wurden. Entfernen Sie decode & encodeURIComponent(), wenn der Schlüssel und der Wert des Cookies nicht verschlüsselt wurden.

11voto

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

8voto

Leo Toff Punkte 671

kirlich gab eine gute Lösung. Allerdings schlägt es fehl, wenn es zwei Cookie-Werte mit ähnlichen Namen gibt, hier ist eine einfache Lösung für diese Situation:

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

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