Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2660 connectés 

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

jqplot/php

n°2271563
pioupiou12​32
Posté le 14-12-2015 à 15:40:58  profilanswer
 

Bonjour j'ai réussi à balancer mes variables d'une bdd sur mon js, mais je n'arrive pas à acceder à ces variables.
 

Code :
  1. $(document).ready(  function()
  2.                     {
  3.                     $.ajax( {
  4.                             type: "GET",
  5.                             url: "situation_eleves.xml",
  6.                             dataType: "xml",
  7.                             success: function(xml) {
  8.                                     $(xml).find('eleves').each( function(){
  9.                                         var cdi = $(this).find('cdi').text();
  10.                                         var cdd = $(this).find('cdd').text();
  11.                                         var stage = $(this).find('stagiaire').text();
  12.                                     } );
  13.                                 }
  14.                             }
  15.                       );
  16.                     }
  17.                  );   
  18. $(document).ready(function(){
  19.      var s1 = [['CDD',15], ['CDI',16], ['FORMATION INGE',14]];
  20.        
  21.     var plot8 = $.jqplot('fromage1', [s1], {
  22.         grid: {
  23.             drawBorder: false,
  24.             drawGridlines: false,
  25.             background: '#ff00ff',
  26.             shadow:true
  27.         },
  28.         axesDefaults: {
  29.            
  30.         },
  31.         seriesDefaults:{
  32.             renderer:$.jqplot.PieRenderer,
  33.             rendererOptions: {
  34.                 showDataLabels: true
  35.             }
  36.         },
  37.         legend: {
  38.             show: true,
  39.             rendererOptions: {
  40.                 numberRows: 1
  41.             },
  42.             location: 's'
  43.         }
  44.     });
  45.  
  46. });


 
j'en ai besoin pour remplir mon graphique.
 
 var s1 = [['CDD',+cdd], ['CDI',+cdi], ['FORMATION INGE',+stage]];
 
comme cela .
 
J'ai essayé biensûr pas mla de méthodes pour essayer d'accéder à ces variable dans l'autre fonction mais pas moyen :) .


Message édité par pioupiou1232 le 14-12-2015 à 16:06:59
mood
Publicité
Posté le 14-12-2015 à 15:40:58  profilanswer
 

n°2271585
pioupiou12​32
Posté le 14-12-2015 à 19:19:35  profilanswer
 

Up, je crois que mon problème est solvable avec des return :) mais je n'ai pas l’occasion de tester.
 
Dite moi si je suis dans l'erreur ou pas si possible ?
 

n°2271591
SICKofitAL​L
misanthrope
Posté le 14-12-2015 à 22:48:52  profilanswer
 

je capte pas trop pourquoi tu recups tes datas via une requete ajax que tu déclenches au ready, et dans un autre ready tu dessines ton graph (si je ne me trompe pas). Pourquoi ne pas rendre ce dernier directement lorsque tu récups tes infos ?
un truc comme ca :

Code :
  1. var render = function(cdi, cdd, stage) {
  2. var s1 = [
  3.     ['CDD', cdi],
  4.     ['CDI', cdd],
  5.     ['FORMATION INGE', stage]
  6. ];
  7. var plot8 = $.jqplot('fromage1', [s1], {
  8.     grid: {
  9.         drawBorder: false,
  10.         drawGridlines: false,
  11.         background: '#ff00ff',
  12.         shadow: true
  13.     },
  14.     axesDefaults: {
  15.     },
  16.     seriesDefaults: {
  17.         renderer: $.jqplot.PieRenderer,
  18.         rendererOptions: {
  19.             showDataLabels: true
  20.         }
  21.     },
  22.     legend: {
  23.         show: true,
  24.         rendererOptions: {
  25.             numberRows: 1
  26.         },
  27.         location: 's'
  28.     }
  29. });
  30. });
  31. $(document).ready(function() {
  32.     $.ajax({
  33.         type: "GET",
  34.         url: "situation_eleves.xml",
  35.         dataType: "xml",
  36.         success: function(xml) {
  37.             $(xml).find('eleves').each(function() {
  38.                 var cdi = $(this).find('cdi').text();
  39.                 var cdd = $(this).find('cdd').text();
  40.                 var stage = $(this).find('stagiaire').text();
  41.                 render(cdi, cdd, stage);
  42.             });
  43.         }
  44.     });
  45. });


Message édité par SICKofitALL le 14-12-2015 à 22:51:28

---------------
We deserve everything that's coming...
n°2271607
pioupiou12​32
Posté le 15-12-2015 à 09:34:50  profilanswer
 

Merci ça fonctionne parfaitement! Je ne suis pas un expert en javascript c'est pour ça j'ai peut être fais des choses insensées.  
 
En revanche je ne comprend toujours pourquoi on ne peut pas agrandir le scope d'une variable au point de sortir de toute fonction en js.
 
 
Un grand merci à toi :).


Message édité par pioupiou1232 le 15-12-2015 à 09:35:14
n°2271616
SICKofitAL​L
misanthrope
Posté le 15-12-2015 à 11:22:25  profilanswer
 

En fait, si tu ne mets pas le mot clé "var" devant une variable en JS, elle est automatiquement considerée comme globale (ou du moins attachée à l'objet global "window" ).
Ceci est une mauvaise chose, car par exemple un autre script (à toi ou pas ...) peut écraser cette même variable. Cool pour débugger quoi ... ;)
 
Je te conseille de lire de le doc concernant la portée des variables en JS, plus complexes qu'il n'y parait.
 
Dans la function "render", pour être clean, on aurait dû donc passer jquery ("$" ) en tant que param.
Voilà voilà ...  [:neriki]  

Code :
  1. var
  2. render = function ($, cdi, cdd, stage)
  3.  {
  4.   var
  5.    s1 = [
  6.      ['CDD', cdi],
  7.      ['CDI', cdd],
  8.      ['FORMATION INGE', stage]
  9.     ],
  10.    plot8 = $.jqplot (
  11.       'fromage1',
  12.       [s1],
  13.       {
  14.        grid: {
  15.         drawBorder: false,
  16.         drawGridlines: false,
  17.         background: '#ff00ff',
  18.         shadow: true
  19.        },
  20.        axesDefaults: {},
  21.        seriesDefaults: {
  22.         renderer:   $.jqplot.PieRenderer,
  23.         rendererOptions: { showDataLabels: true }
  24.        },
  25.        legend: {
  26.         show:    true,
  27.         rendererOptions: { numberRows: 1 },
  28.         location:    's'
  29.        }
  30.       }
  31.      );
  32.  },
  33. handler = function ($)
  34.  {
  35.   $.ajax ({
  36.    type: "GET",
  37.    url: "situation_eleves.xml",
  38.    dataType:"xml",
  39.    success: function (xml)
  40.     {
  41.      $(xml).find ('eleves').each (function ()
  42.       {
  43.        var
  44.         $this = $(this),
  45.         cdi = $this.find ('cdi').text (),
  46.         cdd = $this.find ('cdd').text (),
  47.         stage = $this.find ('stagiaire').text ();
  48.        render($, cdi, cdd, stage);
  49.       });
  50.     }
  51.   });
  52.  };
  53. jQuery (document).ready (handler);



---------------
We deserve everything that's coming...
n°2271637
pioupiou12​32
Posté le 15-12-2015 à 14:37:25  profilanswer
 

Encore merci, je vais lire cette doc quand j'aurai un peu plus le temps.
;)


Aller à :
Ajouter une réponse
 

Sujets relatifs
Graphisme en jqplot 
Plus de sujets relatifs à : jqplot/php


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR