jquery speichern json Datenobjekt in Cookie
-
26-09-2019 - |
Frage
Wie kann ich speichern JSON-Daten in einem Cookie?
Meine JSON-Daten wie folgt aussieht
$("#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'});
Und ich will, wie etwas tun
var dataStore = $.cookie("basket-data", $("#ArticlesHolder").data());
und die Daten abzurufen, ich will es in $("#ArticlesHolder")
laden wie
$.each($.cookie("basket-data"), function(i,e){
$("#ArticlesHolder").data(i, e);
});
Wer weiß, wenn ich auf dem richtigen Weg bin oder sollte dies auf andere Weise getan werden? Einfach ausgedrückt, wie ich aus einem Cookie setzen und ziehen Sie json Daten?
Lösung
Sie können die Daten als JSON serialisiert werden, wie folgt:
$.cookie("basket-data", JSON.stringify($("#ArticlesHolder").data()));
Dann ist es aus dem Cookie zu bekommen:
$("#ArticlesHolder").data(JSON.parse($.cookie("basket-data")));
Dies stützt sich auf JSON.stringify()
und JSON.parse()
serialisiert / deserialisieren Ihr Datenobjekt, für ältere Browser (IE <8) umfasst json2.js die JSON
Funktionalität zu erhalten. In diesem Beispiel wird die jQuery Cookie-Plugin
Andere Tipps
Jetzt gibt es bereits keine Notwendigkeit, den Einsatz JSON.stringify
explizit. Führen Sie einfach diese Codezeile
$.cookie.json = true;
Danach können Sie ein beliebiges Objekt in Cookie speichern können, die automatisch zu JSON konvertiert werden und von JSON zurück, wenn Cookie zu lesen.
var user = { name: "name", age: 25 }
$.cookie('user', user);
...
var currentUser = $.cookie('user');
alert('User name is ' + currentUser.name);
Aber JSON Bibliothek kommt nicht mit jquery.cookie, so dass Sie es selbst herunterladen und sind in HTML-Seite vor jquery. cookie.js
Verwendung JSON.stringify(userData)
zu Coverty JSON-Objekt zu bespannen.
var dataStore = $.cookie("basket-data", JSON.stringify($("#ArticlesHolder").data()));
und zurück von Cookies Verwendung JSON.parse()
bekommen
var data=JSON.parse($.cookie("basket-data"))
Es ist nicht ratsam, den Wert zu speichern, die von JSON.stringify(userData)
zu einem Cookie zurückgegeben wird; kann es in einigen Browsern zu einem Fehler führen.
Bevor Sie es verwenden, sollten Sie es konvertieren zu base64 (mit btoa
), und wenn es zu lesen, konvertieren von base64 (mit atob
).
val = JSON.stringify(userData)
val = btoa(val)
write_cookie(val)
Mit serialize die Daten als JSON und Base64, Abhängigkeit 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));
}
:)
Versuchen Sie dieses: https://github.com/tantau-horia/jquery-SuperCookie
Schnell Verbrauch:
erstellen - Cookie
Kontrolle - existance
überprüfen - überprüfen Cookie-Wert, wenn JSON
check_index - überprüfen, ob Index in JSON
existiertread_values ??- Lese Cookie-Wert als Zeichenfolge
read_JSON - Lese Cookie-Wert als JSON-Objekt
Read_Value - Lese Wert des Index im JSON-Objekt gespeichert
replace_value - ersetzt Wert aus einem bestimmten Index im JSON-Objekt gespeichert
remove_value - remove Wert und Index im JSON-Objekt gespeichert
Just Verwendung:
$.super_cookie().create("name_of_the_cookie",name_field_1:"value1",name_field_2:"value2"});
$.super_cookie().read_json("name_of_the_cookie");