jqplot/php

jqplot/php - Javascript/Node.js - Programmation

Marsh Posté le 14-12-2015 à 15:40:58    

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
Reply

Marsh Posté le 14-12-2015 à 15:40:58   

Reply

Marsh Posté le 14-12-2015 à 19:19:35    

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 ?
 

Reply

Marsh Posté le 14-12-2015 à 22:48:52    

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

Marsh Posté le 15-12-2015 à 09:34:50    

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
Reply

Marsh Posté le 15-12-2015 à 11:22:25    

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

Marsh Posté le 15-12-2015 à 14:37:25    

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

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed