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?

¿Fue útil?

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");
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top