Pergunta

Como posso guardar dados JSON em um cookie?

Meus dados JSON parece com isso

$("#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 eu quero fazer algo como

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

e para recuperar os dados que eu quiser carregá-lo em $("#ArticlesHolder") como

$.each($.cookie("basket-data"), function(i,e){
 $("#ArticlesHolder").data(i, e);
});

alguém sabe se eu estou no caminho certo ou isso deve ser feito de alguma outra forma?Basta colocar, como colocar e puxar dados json a partir de um cookie?

Foi útil?

Solução

Você pode serializar os dados como JSON, como este:

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

Então, para obtê -lo do biscoito:

$("#ArticlesHolder").data(JSON.parse($.cookie("basket-data")));

Isso depende JSON.stringify() e JSON.parse() Para serializar/desserializar seu objeto de dados, para navegadores mais antigos (ou seja, <8) incluir JSON2.JS Para obter o JSON funcionalidade. Este exemplo usa o JQuery Cookie Plugin

Outras dicas

Agora já não há necessidade de usar JSON.stringify explicitamente. Basta executar esta linha de código

$.cookie.json = true;

Depois disso, você pode salvar qualquer objeto no Cookie, que será automaticamente convertido em JSON e volte do JSON ao ler Cookie.

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

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

Mas a JSON Library não vem com jQuery.cookie, então você deve baixá -lo sozinho e incluir na página html antes jQuery.cookie.js

usar JSON.stringify(userData) para a cobertura JSON objeto para string.

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

E para voltar do uso de biscoitos JSON.parse()

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

Não é uma boa prática salvar o valor que é devolvido de JSON.stringify(userData) para um biscoito; Pode levar a um bug em alguns navegadores.

Antes de usá -lo, você deve convertê -lo para base64 (usando btoa), e ao lê -lo, converta de base64 (usando atob).

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

write_cookie(val)

Com serializar os dados como JSON e BASE64, dependência 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));
}

:)

Tente este:https://github.com/tantau-horia/jquery-SuperCookie

Uso Rápido:

create - criar cookie

verificar - verificar a existência de

verificar - verificar o valor do cookie se JSON

check_index - verificar se existe índice em JSON

read_values - ler o valor do cookie como string

read_JSON - ler o valor do cookie como objeto JSON

read_value - ler o valor do índice armazenado em um objeto JSON

replace_value - substituir o valor de um índice especificado armazenados em um objeto JSON

remove_value - remover o valor de índice e armazenados em um objeto JSON

Basta usar:

$.super_cookie().create("name_of_the_cookie",name_field_1:"value1",name_field_2:"value2"});
$.super_cookie().read_json("name_of_the_cookie");
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top