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?

È stato utile?

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");
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top