jquery enregistre l'objet de données json dans un cookie
-
26-09-2019 - |
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 ?
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");