2017-08-15 10 views
1

クッキーの中にオブジェクトの配列を格納しようとしています。クッキー、純粋なJavaScript、jqueryにオブジェクトの配列を格納しますか?

jQueryまたは角度を使用しないでください。

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

このオブジェクトの例を挙げて、期待される出力がどのようなものであるべきかを示すことができますか?ありがとうございました。 – NewToJS

+0

* "オブジェクトの配列をクッキーの内部に格納しようとしています" *実際に**サーバ**のオブジェクトを使用しますか?そうでない場合、クッキーは貧しい選択です。 Webストレージを使用すると、サーバーへのリクエストが膨らむことはなく、APIは**劇的に**向上します。 –

+1

投稿したコードのうち、jQueryや角に特有のものはありません。 – Pineda

答えて

0

だけJSON.parseあなたのリターン:

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

サーバー上のローカルファイルシステムでこれを実行していませんか? ブラウザーによっては、file:///プロトコルを使用してブラウズするときにクッキーが設定されません。

+2

完全な回答ではないので、これをコメントとして投稿してください – Kai

関連する問題