Como faço para salvar dados JSON em um cookie?
Meus dados JSON se parecem com isto
$("#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 quero carregá-los $("#ArticlesHolder")
como
$.each($.cookie("basket-data"), function(i,e){
$("#ArticlesHolder").data(i, e);
});
alguém sabe se estou no caminho certo ou se isso deveria ser feito de outra forma? Simplificando, como faço para colocar e puxar dados json de um cookie?
jquery
cookies
jquery-cookie
Marthin
fonte
fonte
Respostas:
Você pode serializar os dados como JSON, assim:
Então, para obtê-lo do cookie:
Isso depende de
JSON.stringify()
eJSON.parse()
para serializar / desserializar o objeto de dados, para navegadores mais antigos (IE <8) incluem json2.js para obter aJSON
funcionalidade. Este exemplo usa o plugin de cookie jQueryfonte
cookie
é uma função embutida no jQuery. Parece que não. ou está obsoleto ..? se forem os plug-ins que encontro, criar um link para eles seria ótimo para evitar a confusão ...,
caractere (vírgula) pode fazer com que os cookies não sejam configurados corretamente no Safari e em outros navegadores.Agora já não há necessidade de usar
JSON.stringify
explicitamente. Basta executar esta linha de códigoDepois disso, você pode salvar qualquer objeto no cookie, que será automaticamente convertido para JSON e de volta do JSON ao ler o cookie.
Mas a biblioteca JSON não vem com jquery.cookie, então você tem que fazer o download por conta própria e incluí-la na página html antes de jquery.cookie.js
fonte
$cookie.json = true
pode causar conflitos com seus outros cookies. Portanto, tome cuidado ao usar isso em um projeto que já usa cookies em outro lugar!use
JSON.stringify(userData)
para cobrir objeto json para string.e para voltar do uso de cookies
JSON.parse()
fonte
Não é uma boa prática salvar o valor retornado de
JSON.stringify(userData)
um cookie; isso pode causar um bug em alguns navegadores.Antes de usá-lo, você deve convertê-lo para base64 (usando
btoa
), e ao lê-lo, converta de base64 (usandoatob
).fonte
{
ou}
, e descartará silenciosamente todos os cookies que seguem o cookie rejeitado no cabeçalho do cookie.Com serializar os dados como JSON e Base64, dependência jquery.cookie.js:
:)
fonte
Experimente este: https://github.com/tantau-horia/jquery-SuperCookie
Apenas use:
fonte