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

7voto

Downgoat Punkte 12860

Utilice object.defineProperty

Damit können Sie leicht auf Cookies zugreifen

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

Von nun an können Sie einfach tun:

alert( Cookies.obligations );

Dieser wird ebenfalls automatisch aktualisiert, d. h. wenn Sie ein Cookie ändern, wird die Cookies wird sich ebenfalls ändern.

7voto

Sampson Punkte 258265

Es scheint mir, dass Sie die Cookie-Schlüssel-Wert-Paare in ein Array aufteilen und Ihre Suche darauf basieren könnten:

var obligations = getCookieData("obligations");

Die Folgendes ausführt:

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

Fiedel: http://jsfiddle.net/qFmPc/

Oder vielleicht sogar das Folgende:

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

6voto

Saddam H Punkte 119

Einfache Funktion zum Abrufen von Cookies mit Cookie-Namen:

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

6voto

Eugene Burtsev Punkte 1445

In meinen Projekten verwende ich folgende Funktion, um auf Cookies nach Namen zuzugreifen

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

6voto

cowbert Punkte 2939

Offenbar hat MDN noch nie etwas von der Regex-Zeichenklasse für Wortgrenzen gehört \b , die mit zusammenhängenden \w+ die auf beiden Seiten begrenzt ist durch \W+ :

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

var obligations = getCookie('obligations');

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