----- Mail original -----
De: "Mist. GraphX" <arnaud.berard@mister-graphx.com>
À: spip-zone@rezo.net
Envoyé: Vendredi 3 Novembre 2017 10:27:27
Objet: Re: [SPIP Zone] Local Storage vers squelette SPIP
Le 30/10/2017 à 11:01, drozerah@free.fr a écrit :
Bonjour,
Selon vous, est-t-il possible de passer une variable javascript de type array stockée en local storage dans un squelette SPIP étant entendu que local storage (client side) et php (server side) ne fonctionnent à priori pas ensemble, donc peut être via une méthode en Ajax ? Auriez vous une méthode existante sous le coude ? L'idée consiste à passer un tableau construit avec javascript et sérialisé avec la méthode JSON.stringify() :
myVariable = [1,2,3];
localStorage.setItem("key", JSON.stringify(myVariable));
Puis de passer la valeur de key (le tableau) au squelette (comment ?), puis parser la variable et utiliser le tableau dans une boucle spip...
Des idées ?
T.
----
spip-zone@rezo.net - http://listes.rezo.net/mailman/listinfo/spip-zone
Bonjour, tu le fait en passant ton tableau sérialisé a la noisette en
utilisant ajaxload();
Tu trouvera comment passer des variables a la noisette dans la partie :
rechargement de blocs ajax
et cet exemple :
--
Bonne journée
Arnaud B. (Mist. GraphX)
----
spip-zone@rezo.net - http://listes.rezo.net/mailman/listinfo/spip-zone
Bonjour Arnaud, merci pour ta réponse,
J'ai consulté les liens info que tu proposes mais je n'arrive pas à me faire une idée claire de la manip...
J'ai une fonction saveMyArray qui enregistre le tableau en localStorage et c'est cette fonction javascript qui devrait passer le tableau sérialisé à la page spip courante sous forme de variable d’environnement :
function saveMyArray(){
// enregistre le tableau
localStorage.setItem("_options", JSON.stringify(myArray));
// todo => trouver une solution SPIP compatible pour passer le tableau sérialisé à #ENV
};
Comme indiqué dans la doc SPIP la méthode .ajaxReload() permet de passer une liste d’arguments passés à l’url lors du chargement du bloc et de modifier le #ENV du bloc mis à jour, hors dans mon cas, il n'y à pas de bloc à recharger ce qui fait que je ne vois pas comment utiliser .ajaxReload() dans ma fonction ?
T.