IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

JavaScript et json_encode


Sujet :

JavaScript

  1. #1
    Membre �clair�
    Inscrit en
    F�vrier 2009
    Messages
    635
    D�tails du profil
    Informations forums :
    Inscription : F�vrier 2009
    Messages : 635
    Par d�faut JavaScript et json_encode
    Bonjour,

    Dans une liste <select>, depuis onchange="", j'ex�cute la fonction test();
    afin de remplir une seconde liste select.

    Code HTML : S�lectionner tout - Visualiser dans une fen�tre � part
    <select id="mylist1" onchange="test('<?php echo json_encode($class->scriptData); ?>', 'mylist1', 'mylist2');"></select> <select id="mylist2""></select>

    Dans le fichier js:

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    function test(data, listA, listB){
    var scriptData = data;
     
    //alert(scriptData.element1); // valeur numérique max
     
    select = document.getElementById(listB);
    var max = scriptData.element1;
     
    for (var i = 1; i<= max; i++) {
     
        var opt = document.createElement('option');
        opt.value = i;
        opt.innerHTML = i;
        select.appendChild(opt);
    }
    }
    Ce code devrait fonctionner mais je tourne en rond depuis 1h.. le but est d'�viter ce genre de d�claration :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    <script type="text/javascript">
      scriptData = <?php echo json_encode($class->scriptData); ?>;
    </script>
    En fait, celui-ci fonctionne d�j� ainsi mais je voudrais d�clarer la variable scriptData directement dans la fonction test() et non � l'ext�rieure.

    Vous remerciant par avance pour votre r�ponse,

  2. #2
    R�dacteur

    Avatar de danielhagnoul
    Homme Profil pro
    �tudiant perp�tuel
    Inscrit en
    F�vrier 2009
    Messages
    6 389
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 75
    Localisation : Belgique

    Informations professionnelles :
    Activit� : �tudiant perp�tuel
    Secteur : Enseignement

    Informations forums :
    Inscription : F�vrier 2009
    Messages : 6 389
    Billets dans le blog
    125
    Par d�faut
    Le code JS fonctionne dans mon test :

    Code HTML : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    <select id="mylist1"></select>
    <select id="mylist2"></select>

    Code JavaScript : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    function test( data, listA, listB ){
    	var scriptData = data;
     
    	console.log( scriptData.element1 ); // valeur numérique max
     
    	var select = document.getElementById(listB);
    	var max = scriptData.element1;
     
    	for ( var i = 1; i <= max; i++) {
    		var opt = document.createElement( 'option' );
    		opt.value = i;
    		opt.innerHTML = i;
    		select.appendChild(opt);
    	}
    }
     
    test( { "element1" : 10 }, "mylist1", "mylist2" );

    L'erreur est sans doute dans le contenu de data, que donne un console.log( data );

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues � un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

  3. #3
    Membre �clair�
    Inscrit en
    F�vrier 2009
    Messages
    635
    D�tails du profil
    Informations forums :
    Inscription : F�vrier 2009
    Messages : 635
    Par d�faut
    Merci pour votre r�ponse,

    En fait tout fonctionne, c'est juste quand je remplace la d�claration

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    <script type="text/javascript">
      scriptData = <?php echo json_encode($class->scriptData); ?>;
    </script>
    par :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    function test( data, listA, listB ){
    	var scriptData = data; ...
    
    <select id="mylist1" onchange="test('<?php echo json_encode($class->scriptData); ?>', 'mylist1', 'mylist2');"></select>
    Qu'est-ce que vous avez mis dans le onchange ?

    Merci

  4. #4
    Expert confirm�
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 681
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 681
    Par d�faut
    regardez le code HTML g�n�r� dans les 2 cas. vous verrez que dans le 2nd cas, vous cr�ez une chaine de caract�res au lieu d'un objet JSON

  5. #5
    Membre �clair�
    Inscrit en
    F�vrier 2009
    Messages
    635
    D�tails du profil
    Informations forums :
    Inscription : F�vrier 2009
    Messages : 635
    Par d�faut
    Avez vous une solution � cela svp?

  6. #6
    R�dacteur

    Avatar de danielhagnoul
    Homme Profil pro
    �tudiant perp�tuel
    Inscrit en
    F�vrier 2009
    Messages
    6 389
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 75
    Localisation : Belgique

    Informations professionnelles :
    Activit� : �tudiant perp�tuel
    Secteur : Enseignement

    Informations forums :
    Inscription : F�vrier 2009
    Messages : 6 389
    Billets dans le blog
    125
    Par d�faut
    <select id="mylist1" onchange="test(' " + <?php echo json_encode($class->scriptData); ?> + " ', 'mylist1', 'mylist2');"></select>

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues � un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

  7. #7
    Membre �clair�
    Inscrit en
    F�vrier 2009
    Messages
    635
    D�tails du profil
    Informations forums :
    Inscription : F�vrier 2009
    Messages : 635
    Par d�faut
    Bonjour,

    ne fonctionne pas non plus, j'ai aussi essay� ceci;

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    onchange="test(' + <?php echo json_encode($class->json_data); ?> + ', 'liste1', 'liste2'....

  8. #8
    Expert confirm�
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 681
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 681
    Par d�faut
    les guillemets simples ou doubles cr�ent une chaine de caract�re donc pour avoir un objet JSON, essayez sans ces guillemets :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    onchange="test(<?php echo json_encode($class->json_data);?>, 'liste1', 'liste2'....

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. Les meilleurs livres pour apprendre le JavaScript
    Par vermine dans le forum Livres
    R�ponses: 23
    Dernier message: 10/06/2019, 18h58
  2. R�ponses: 13
    Dernier message: 13/12/2013, 11h41
  3. JavaScript<---->ActionScript
    Par crazypiou dans le forum Flash
    R�ponses: 21
    Dernier message: 17/04/2009, 17h14
  4. appel xmlservice via fonction javascript
    Par pram dans le forum XMLRAD
    R�ponses: 2
    Dernier message: 06/05/2003, 14h24
  5. JavaScript de v�rification de formulaire
    Par [DreaMs] dans le forum XMLRAD
    R�ponses: 6
    Dernier message: 26/02/2003, 13h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo