Question

Comment sauvegarder les données JSON dans un cookie ?

Mes données JSON ressemblent à ceci

$("#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'});

Et je veux faire quelque chose comme

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

et pour récupérer les données dans lesquelles je veux les charger $("#ArticlesHolder") comme

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

Est-ce que quelqu'un sait si je suis sur la bonne voie ou si cela doit être fait autrement ?En termes simples, comment puis-je mettre et extraire des données JSON à partir d'un cookie ?

Était-ce utile?

La solution

Vous pouvez sérialiser les données en tant que JSON, comme ceci:

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

Ensuite, pour l'obtenir à partir du cookie:

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

JSON.stringify() et JSON.parse() pour linéariser / désérialiser votre objet de données, pour les personnes âgées navigateurs (IE <8) comprennent json2.js pour obtenir la fonctionnalité JSON. Cet exemple utilise le plug-in biscuit jQuery

Autres conseils

Maintenant, il n'y a déjà pas besoin d'utiliser JSON.stringify explicitement. Il suffit d'exécuter cette ligne de code

$.cookie.json = true;

Après cela, vous pouvez enregistrer un objet dans cookie qui sera automatiquement converti en JSON et retour de JSON lors de la lecture cookie.

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

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

Mais bibliothèque JSON ne vient pas avec jquery.cookie, donc vous devez le télécharger en vous-même et inclure dans la page html avant jquery. cookie.js

utilisation JSON.stringify(userData) à coverty objet JSON à chaîne.

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

et pour revenir à l'utilisation des cookies JSON.parse()

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

Il est pas une bonne pratique pour enregistrer la valeur qui est renvoyée par JSON.stringify(userData) à un cookie; elle peut conduire à un bogue dans certains navigateurs.

Avant de l'utiliser, vous devez le convertir en base64 (en utilisant btoa), et lors de la lecture, de convertir base64 (en utilisant atob).

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

write_cookie(val)

sérialiser les données en tant que JSON et base64, jquery.cookie.js de dépendances:

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));
}

:)

Essaye celui-là:https://github.com/tantau-horia/jquery-SuperCookie

Utilisation rapide :

créer - créer un cookie

vérifier - vérifier l'existence

verify - vérifie la valeur du cookie si JSON

check_index - vérifie si l'index existe dans JSON

read_values ​​- lit la valeur du cookie sous forme de chaîne

read_JSON - lit la valeur du cookie en tant qu'objet JSON

read_value - lire la valeur de l'index stocké dans l'objet JSON

replace_value - remplace la valeur d'un index spécifié stocké dans l'objet JSON

remove_value - supprime la valeur et l'index stockés dans l'objet JSON

Utilisez simplement :

$.super_cookie().create("name_of_the_cookie",name_field_1:"value1",name_field_2:"value2"});
$.super_cookie().read_json("name_of_the_cookie");
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top