112 votes

jquery enregistre un objet de données json dans un cookie

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, je veux les charger dans le fichier $("#ArticlesHolder") comme

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

Quelqu'un sait-il si je suis sur la bonne voie ou si cela doit être fait d'une autre manière ? En d'autres termes, comment puis-je mettre et extraire des données json d'un cookie ?

202voto

Nick Craver Points 313913

Vous pouvez sérier les données comme JSON, comme ceci :

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

Puis de le récupérer dans le 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 navigateurs plus anciens (IE<8) inclure json2.js pour obtenir le JSON fonctionnalité. Cet exemple utilise le plugin cookie jQuery

40voto

Vitalii Korsakov Points 2194

Maintenant, il n'y a déjà plus besoin d'utiliser JSON.stringify de manière explicite. Il suffit d'exécuter cette ligne de code

$.cookie.json = true;

Après cela, vous pouvez sauvegarder n'importe quel objet dans le cookie, qui sera automatiquement converti en JSON et de nouveau en 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 n'est pas fournie avec jquery.cookie, vous devez donc la télécharger vous-même et l'inclure dans la page html avant de la télécharger. jquery.cookie.js

7voto

XMen Points 4568

utiliser JSON.stringify(userData) pour transformer un objet json en chaîne.

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

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

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

0voto

Tantau Horia Points 201

Essaie celle-là : https://github.com/tantau-horia/jquery-SuperCookie

Utilisation rapide :

create - créer un cookie

vérifier - vérifier l'existence

verify - vérifier la valeur du cookie si JSON

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

read_values - lit la valeur du cookie en tant que chaîne de caractères

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

read_value - lit la valeur 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 l'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");

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X