web-dev-qa-db-ja.com

jqueryはjsonデータオブジェクトをCookieに保存します

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

私が正しい軌道に乗っているかどうか、またはこれを他の方法で行うべきかどうかは誰にも分かりますか?簡単に言えば、どのようにしてJSONデータをCookieに入れたり、プルしたりできますか?

106
Marthin

次のように、データを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 cookieプラグイン を使用します

190
Nick Craver

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

$.cookie.json = true;

その後、任意のオブジェクトをCookieに保存できます。これは、Cookieを読み取るときに自動的にJSONに変換され、JSONから戻されます。

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

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

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

40

JSON.stringify(userData)を使用して、JSONオブジェクトを文字列に変換します。

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

cookieから戻るにはJSON.parse()を使用します

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

JSON.stringify(userData)から返された値をCookieに保存することはお勧めできません。一部のブラウザでバグが発生する可能性があります。

それを使用する前に、それをbase64btoaを使用)に変換し、それを読み取るときにbase64atobを使用)から変換する必要があります。

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

write_cookie(val)
3
Eyal Ch

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

:)

2
asimov

これを試してください: https://github.com/tantau-horia/jquery-SuperCookie

クイック使用:

create-Cookieを作成します

check-存在を確認します

verify-JSONの場合、Cookieの値を確認します

check_index-インデックスがJSONに存在するかどうかを確認します

read_values-Cookie値を文字列として読み取ります

read_JSON-Cookie値を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");
0