jQuery Guardar objeto de datos JSON en la galleta
-
26-09-2019 - |
Pregunta
¿Cómo puedo guardar datos JSON en una cookie?
Mi JSON miradas de datos como este
$("#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'});
Y quiero hacer algo como
var dataStore = $.cookie("basket-data", $("#ArticlesHolder").data());
y para recuperar los datos que quiero cargarlo en $("#ArticlesHolder")
como
$.each($.cookie("basket-data"), function(i,e){
$("#ArticlesHolder").data(i, e);
});
¿alguien sabe si estoy en el camino correcto o debería hacerse esto de alguna otra manera? En pocas palabras, ¿Cómo puedo poner JSON y extraer datos de una cookie?
Solución
Se puede serializar los datos como JSON, como esto:
$.cookie("basket-data", JSON.stringify($("#ArticlesHolder").data()));
Luego de obtener de la cookie:
$("#ArticlesHolder").data(JSON.parse($.cookie("basket-data")));
Esto se basa en JSON.stringify()
y JSON.parse()
para serializar / deserializar el objeto de datos, de la tercera edad navegadores (IE <8) incluyen json2.js para obtener la funcionalidad JSON
. En este ejemplo se utiliza el jQuery plugin de galletas
Otros consejos
Ahora ya no hay necesidad de uso JSON.stringify
explícitamente. Sólo hay que ejecutar esta línea de código
$.cookie.json = true;
Después de que se puede guardar cualquier objeto de galleta, que se convierte automáticamente en JSON y JSON de vuelta de la lectura de la galleta.
var user = { name: "name", age: 25 }
$.cookie('user', user);
...
var currentUser = $.cookie('user');
alert('User name is ' + currentUser.name);
biblioteca Pero JSON no viene con jquery.cookie, así que hay que descargar por sí mismo e incluir en la página HTML antes de jQuery. cookie.js
El uso JSON.stringify(userData)
a coverty objeto JSON a cadena.
var dataStore = $.cookie("basket-data", JSON.stringify($("#ArticlesHolder").data()));
y para volver por el uso de cookies JSON.parse()
var data=JSON.parse($.cookie("basket-data"))
No es una buena práctica para guardar el valor que se devuelve desde JSON.stringify(userData)
a una cookie; que puede conducir a un error en algunos navegadores.
Antes de usarlo, debe convertirlo a base 64 (usando btoa
), y al leerlo, convertido del base 64 (usando atob
).
val = JSON.stringify(userData)
val = btoa(val)
write_cookie(val)
Con serializar los datos como JSON y Base64, jquery.cookie.js dependencia:
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));
}
:)
Prueba con esto: https://github.com/tantau-horia/jquery-SuperCookie
Uso rápida:
crear - crear cookies
cheque - cheque existencia
verificar - verificar valor de la cookie si JSON
check_index - verificar si existe índice en JSON
read_values ??- valor de la cookie de lectura como la cadena
read_JSON - valor de la cookie de lectura como objeto JSON
read_value - valor leído del índice almacenado en el objeto JSON
replace_value - sustituir el valor de un índice especificado almacenado en el objeto JSON
remove_value - valor remove y el índice almacenado en el objeto JSON
Sólo uso:
$.super_cookie().create("name_of_the_cookie",name_field_1:"value1",name_field_2:"value2"});
$.super_cookie().read_json("name_of_the_cookie");