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

AJAX Discussion :

[AJAX] Highcharts et JSON


Sujet :

AJAX

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Septembre 2011
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2011
    Messages : 15
    Points : 9
    Points
    9
    Par défaut [AJAX] Highcharts et JSON
    Bonjour et bonne année !

    Alors voilà j'ai crée un système de vote en ajax et j'utilise highcharts pour afficher le résultat des votes sous forme de graphique. Lorsqu’un utilisateur vote, une fonction est appelée et met à jour certaines informations sur la page ainsi que le graphique.

    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 updateChart() {
     
        $.getJSON("<?php echo url_for('rating/refresh') ?>", {release: <?php echo $release->getId() ?>}, function(json) {
            $('#avg').hide();
            $('#avg').html(json.avg);
            $('#avg').show('slow');
     
            $('#votes').hide();
            $('#votes').html(json.votes);
            $('#votes').show('slow');
     
            chart.series[0].setData([json.serie]);
            chart.redraw();
        });
      }
    Ce code marche très bien sauf pour la partie mise à jour du graphique, voici le JSON retourné par le serveur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    {"avg":"4.00","votes":"1","serie":"0,0,0,0,0,0,0,1,0,0"}
    En fait, je pense avoir trouvé l'origine du problème mais pas la solution :

    Dans la fonction updateChart(), si je remplace json.serie par 0,0,0,0,0,0,0,1,0,0 (donc sans les quotes du JSON) ça marche...
    Si je met "0,0,0,0,0,0,0,1,0,0" comme dans le json, cela ne fonctionne pas.

    Si quelqu'un sait comment faire pour que ça fonctionne je suis preneur

  2. #2
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Septembre 2011
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2011
    Messages : 15
    Points : 9
    Points
    9
    Par défaut
    J'ai modifié mon json pour avoir le format suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    {"avg":"3.50","votes":"3","serie":["0,0,0,0,0,0,1,0,0,0"]}
    Et dans la fonction updateChart :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    chart.series[0].setData(json.serie);
    Mais je comprends pas pourquoi j'ai des quotes dans le tableau ?


    Voici la fonction php qui créé le tableau :
    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
    17
     
        public function ratingsGraph($release)
        {   
          $response = array();
     
          for($i=1; $i<=10; $i++)
          {				
            $q = $this->createQuery('r')
              ->where('r.release_id = ?', $release->getId())
              ->andWhere('r.rating_note = ?', (float) ($i/2))
              ->execute();
     
            array_push($response, count($q));
          }
     
          return implode(',', $response);
        }
    Et comment je créer le json :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
        $this->getResponse()->setContentType('application/json');
        $ratings = Doctrine_Core::getTable('sfJoinRating')->ratingsGraph($release);
        $output = array("avg" => $release->getAverageNote(), "votes" => $release->getTotalVotes(), "serie" => array($ratings));
        return $this->renderText(json_encode($output));
    Il y a quelque chose que je comprend pas

  3. #3
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    16 959
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 959
    Points : 44 112
    Points
    44 112
    Par défaut
    Bonjour,
    Mais je comprends pas pourquoi j'ai des quotes dans le tableau ?
    à ton avis que fait implode(',', $response);, cela converti ton tableau en chaîne de caractères.

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Septembre 2011
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2011
    Messages : 15
    Points : 9
    Points
    9
    Par défaut
    Ohlala

    Un grand MERCI je n'y avais pas pensé. En fait la fonction marche puisque je m'en sert pour afficher le graphique mais pas lors du rechargement des données en Ajax avec json_encode(). Voici la version compatible :

    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
    17
     
        public function ratingsGraph($release)
        {   
          $response = array();
     
          for($i=1; $i<=10; $i++)
          {				
            $q = $this->createQuery('r')
              ->where('r.release_id = ?', $release->getId())
              ->andWhere('r.rating_note = ?', (float) ($i/2))
              ->execute();
     
            $response[] = (int) count($q);
          }
     
          return $response;
        }
    Encore merci !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AJAX] parcourir un JSON
    Par DeeVoiD dans le forum AJAX
    Réponses: 8
    Dernier message: 09/04/2009, 11h11
  2. [AJAX] Encodage avec JSON
    Par Norin dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 03/07/2008, 22h02
  3. [AJAX] Ou intervient JSON ?
    Par whitespirit dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 16/06/2008, 08h42
  4. [AJAX] lecture fichier json distant
    Par 4R416N33 dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 08/06/2008, 20h01
  5. [AJAX] Mise en place d'un réponse dans Ajax.Request via JSON
    Par polothentik dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 13/05/2008, 09h05

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