jquery salva l'oggetto dati json nel cookie
-
26-09-2019 - |
Domanda
Come posso salvare i dati JSON in un cookie?
I miei dati JSON hanno questo aspetto
$("#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'});
E voglio fare qualcosa del genere
var dataStore = $.cookie("basket-data", $("#ArticlesHolder").data());
e per recuperare i dati in cui voglio caricarli $("#ArticlesHolder")
Piace
$.each($.cookie("basket-data"), function(i,e){
$("#ArticlesHolder").data(i, e);
});
qualcuno sa se sono sulla strada giusta o dovrei farlo in qualche altro modo?In poche parole, come posso inserire ed estrarre i dati JSON da un cookie?
Soluzione
È possibile serializzare i dati come JSON, in questo modo:
$.cookie("basket-data", JSON.stringify($("#ArticlesHolder").data()));
Poi per ottenerlo dal cookie:
$("#ArticlesHolder").data(JSON.parse($.cookie("basket-data")));
Questa si basa su JSON.stringify()
e JSON.parse()
per serializzare / deserializzare l'oggetto dei dati, per anziani i browser (IE <8) includono json2.js per ottenere la funzionalità JSON
. Questo esempio utilizza il jQuery Plugin biscotto
Altri suggerimenti
Ora non v'è già alcuna necessità di utilizzare in modo esplicito JSON.stringify
. Basta eseguire questa riga di codice
$.cookie.json = true;
Dopo di che è possibile salvare qualsiasi oggetto in biscotto, che verrà automaticamente convertito in JSON e JSON indietro da quando la lettura dei cookie.
var user = { name: "name", age: 25 }
$.cookie('user', user);
...
var currentUser = $.cookie('user');
alert('User name is ' + currentUser.name);
biblioteca Ma JSON non viene fornito con jquery.cookie, quindi bisogna scaricare da soli e includere nella pagina HTML prima jQuery. cookie.js
uso JSON.stringify(userData)
per oggetto JSON coverty a stringa.
var dataStore = $.cookie("basket-data", JSON.stringify($("#ArticlesHolder").data()));
e per ottenere di nuovo da un uso dei cookie JSON.parse()
var data=JSON.parse($.cookie("basket-data"))
Non è buona pratica per salvare il valore restituito da JSON.stringify(userData)
ad un cookie; può portare a un bug in alcuni browser.
Prima di utilizzarlo, si dovrebbe convertirlo in base64 (usando btoa
), e quando la lettura, convertito da base64 (usando atob
).
val = JSON.stringify(userData)
val = btoa(val)
write_cookie(val)
Con serializzare i dati come JSON e Base64, jquery.cookie.js dipendenza:
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));
}
:)
Prova questo:https://github.com/tantau-horia/jquery-SuperCookie
Utilizzo rapido:
crea - crea cookie
controlla - controlla l'esistenza
verifica: verifica il valore del cookie se JSON
check_index: verifica se l'indice esiste in JSON
read_values: legge il valore del cookie come stringa
read_JSON: legge il valore del cookie come oggetto JSON
read_value: leggi il valore dell'indice memorizzato nell'oggetto JSON
replace_value: sostituisce il valore da un indice specificato memorizzato nell'oggetto JSON
rimuovi_valore: rimuove il valore e l'indice archiviati nell'oggetto JSON
Basta usare:
$.super_cookie().create("name_of_the_cookie",name_field_1:"value1",name_field_2:"value2"});
$.super_cookie().read_json("name_of_the_cookie");