jqueryはクッキーにjsonデータオブジェクトを保存します
-
26-09-2019 - |
質問
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");