質問

JSON データを Cookie に保存するにはどうすればよいですか?

私のJSONデータは次のようになります

$("#ArticlesHolder").data('15', {name:'testname', nr:'4',price:'400'});
$("#ArticlesHolder").data('25', {name:'name2', nr:'1', price:'100'});
$("#ArticlesHolder").data('37', {name:'name3', nr:'14', price:'60'});

そして、私は次のようなことをしたいです

var dataStore = $.cookie("basket-data", $("#ArticlesHolder").data());

ロードしたいデータを取得するには $("#ArticlesHolder") のように

$.each($.cookie("basket-data"), function(i,e){
 $("#ArticlesHolder").data(i, e);
});

私が正しい方向に進んでいるのか、それとも別の方法でこれを行う必要があるのか​​誰か知っていますか?簡単に言うと、Cookie に JSON データを入力したり、Cookie から JSON データを取得したりするにはどうすればよいでしょうか?

役に立ちましたか?

解決

次のように、データを JSON としてシリアル化できます。

$.cookie("basket-data", JSON.stringify($("#ArticlesHolder").data()));

次に、Cookie からそれを取得するには:

$("#ArticlesHolder").data(JSON.parse($.cookie("basket-data")));

これが依存しているのは、 JSON.stringify() そして JSON.parse() 古いブラウザ (IE<8) の場合、データ オブジェクトをシリアル化/逆シリアル化するには、次のものが含まれます。 json2.js を得るために JSON 機能性。この例では、 jQuery クッキープラグイン

他のヒント

さて、明示的にJSON.stringifyを使用する必要はもうありません。ただ、このコード行を実行します。

$.cookie.json = true;

その後、あなたはクッキーを読み込むときに自動的にJSONからJSONとバックに変換される、クッキーに任意のオブジェクトを保存することができます。

var user = { name: "name", age: 25 }
$.cookie('user', user);
...

var currentUser = $.cookie('user');
alert('User name is ' + currentUser.name);

しかし、JSONライブラリは、あなたが自分でそれをダウンロードして、 jqueryの前に、HTMLページに含める必要がありますので、jquery.cookieが付属していません。 cookie.jsする

文字列にcovertyのJSONオブジェクトに使用JSON.stringify(userData)ます。

var dataStore = $.cookie("basket-data", JSON.stringify($("#ArticlesHolder").data()));

とクッキーの使用からバックを取得するためのJSON.parse()

var data=JSON.parse($.cookie("basket-data"))

クッキーにJSON.stringify(userData)から返された値を保存することをお勧めではありません。それは一部のブラウザのバグにつながることができます。

それを使用する前に、あなたはのbase64でのにそれを変換する必要があります(btoaを使用して)、それを読んで、のbase64でのからの変換(atobを使用して)ます。

val = JSON.stringify(userData)
val = btoa(val)

write_cookie(val)

JSONとのBase64としてシリアライズデータと、依存jquery.cookie.js

var putCookieObj = function(key, value) {
    $.cookie(key, btoa(JSON.stringify(value)));
}

var getCookieObj = function (key) {
    var cookie = $.cookie(key);
    if (typeof cookie === "undefined") return null;
    return JSON.parse(atob(cookie));
}

:)

この方法を試してください。 https://github.com/tantau-horia/jquery-SuperCookieする

  

クイック使用方法:

     

作成 - 作成クッキー

     

チェック - チェックexistance

     

を確認します - クッキーの値を確認する場合はJSON

     

check_index - 検証インデックスがJSONに存在する場合、

     

read_values - 読み取りクッキーの値を文字列として

     

read_JSON - JSONオブジェクトとして読み取り、クッキー値

     

read_value - JSONオブジェクトに格納されたインデックスの読み取り値

     

replace_value - JSONオブジェクトに格納されている指定されたインデックスの値を置き換える

     

remove_value - JSONオブジェクトに格納されている削除値とインデックス

だけを使用します。

$.super_cookie().create("name_of_the_cookie",name_field_1:"value1",name_field_2:"value2"});
$.super_cookie().read_json("name_of_the_cookie");
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top