[SPIP Zone] Local Storage vers squelette SPIP

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.

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 : Exemple de bloc télécommandé en Ajax - SPIP-Contrib

--

Bonne journée
Arnaud B. (Mist. GraphX)

----- 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.

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 ? 

Oui dans des cas comme ça tu est obligée (enfin moi c’est ce que je fais ^^) de faire une noisette que tu incluera dans ta page.


<INCLURE{fond=include/mon_bloc, ajax=monbloc }/>

a savoir que deux noisette ne peuvent pas se causer de l’une a l’autre a sein d’une même page, c’est bien la page qui dispatch vers toutes les noisettes


var mydatas = localStorage.setItem("_options", JSON.stringify(myArray));

ajaxReload('monbloc', {   callback:function(){
    alert('fini');
  },   args: mydatas,   history:false });

devrait fonctionner

T.