Comment enregistrer des 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 que je veux charger dans $("#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 devrait être fait d'une autre manière? En termes simples, comment puis-je mettre et extraire des données JSON d'un cookie?
Vous pouvez sérialiser les données au format JSON, comme ceci:
$.cookie("basket-data", JSON.stringify($("#ArticlesHolder").data()));
Ensuite, pour l'obtenir du cookie:
$("#ArticlesHolder").data(JSON.parse($.cookie("basket-data")));
Cela repose sur JSON.stringify()
et JSON.parse()
pour sérialiser/désérialiser votre objet de données, pour les anciens navigateurs (IE <8), inclure json2.js pour obtenir la fonctionnalité JSON
. Cet exemple utilise le plugin jQuery cookie
Maintenant, il n'est déjà plus nécessaire d'utiliser JSON.stringify
explicitement. Il suffit d'exécuter cette ligne de code
$.cookie.json = true;
Après cela, vous pouvez enregistrer n'importe quel objet dans un cookie, qui sera automatiquement converti en JSON et inversement à partir de JSON lors de la lecture du cookie.
var user = { name: "name", age: 25 }
$.cookie('user', user);
...
var currentUser = $.cookie('user');
alert('User name is ' + currentUser.name);
Mais la bibliothèque JSON ne vient pas avec jquery.cookie, vous devez donc la télécharger vous-même et l'inclure dans la page html avant jquery.cookie.js
utilisez JSON.stringify(userData)
pour réduire un objet json à une chaîne.
var dataStore = $.cookie("basket-data", JSON.stringify($("#ArticlesHolder").data()));
et pour récupérer un cookie, utilisez JSON.parse()
var data=JSON.parse($.cookie("basket-data"))
Il est déconseillé de sauvegarder la valeur renvoyée par JSON.stringify(userData)
dans un cookie; cela peut conduire à un bug dans certains navigateurs.
Avant de l'utiliser, vous devez le convertir en base64 (en utilisant btoa
) et, lors de la lecture, convertir de en base64 (en utilisant atob
).
val = JSON.stringify(userData)
val = btoa(val)
write_cookie(val)
Avec la sérialisation des données en JSON et en Base64, la dépendance 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));
}
:)
Essayez celui-ci: https://github.com/tantau-horia/jquery-SuperCookie
Utilisation rapide:
créer - créer un cookie
vérifier - vérifier l'existance
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 - valeur de lecture de l'index stockée dans un objet JSON
replace_value - remplace la valeur d'un index spécifié stocké dans un objet JSON
remove_value - supprime la valeur et l'index stockés dans un objet JSON
Il suffit d'utiliser:
$.super_cookie().create("name_of_the_cookie",name_field_1:"value1",name_field_2:"value2"});
$.super_cookie().read_json("name_of_the_cookie");