2017-08-15 1 views
1

Ich versuche, Array von Objekt in Cookie zu speichern.speichern Array von Objekten in Cookie, reines Javascript, keine jquery?

Ohne Verwendung von jQuery oder eckig.

function setCook (name,value) { 
    var cookie = [name, '=', JSON.stringify(value)].join(''); 
    document.cookie = cookie; 
} 

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

Können Sie ein Beispiel für dieses Objekt geben und vielleicht zeigen, was Ihre erwartete Ausgabe sein sollte? Vielen Dank. – NewToJS

+0

* "Ich versuche ein Array von Objekten in einem Cookie zu speichern" * Wollen Sie wirklich die Objekte auf dem ** Server ** verwenden? Wenn nicht, sind Cookies eine schlechte Wahl. Verwenden Sie Webspeicher, damit Sie keine Anfragen an Ihren Server aufblähen und weil die API ** dramatisch ** besser ist. –

+1

Es scheint keinen Aspekt des von Ihnen geposteten Codes zu geben, der spezifisch für jQuery oder eckig ist ... – Pineda

Antwort

0

Gerade JSON.parse Ihre Rückkehr:

https://repl.it/KKoF

function setCook(name, value) { 
    var cookie = [ 
     name, 
     '=', 
     JSON.stringify(value) 
    ].join(''); 
    document.cookie = cookie; 
} 

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 JSON.parse(
       c.substring(nameEQ.length, c.length) 
      ); 
     } 
    } 
    return null; 
} 

setCook('foo', `[ 
    { 
     "qux": "boz" 
    }, 
    { 
     "baz": "zot" 
    } 
]`); 
let obj = readCookie('foo'); 

console.log(obj); 

/* 
[ 
    { 
     "qux": "boz" 
    }, 
    { 
     "baz": "zot" 
    } 
] 
*/ 
0

Sind Sie diese im lokalen Dateisystem ausgeführt wird und nicht auf einem Server? Cookies werden beim Browsen mit dem Protokoll file: /// je nach Browser nicht festgelegt.

+2

Bitte poste dies als Kommentar, da es keine vollständige Antwort ist – Kai

Verwandte Themen