Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > AJAX
AJAX Forum sur la programmation AJAX. Avant de poster : Cours AJAX, FAQ AJAX, Toutes les FAQ JavaScript
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 01/01/2012, 14h10   #1
Invité de passage
 
Homme
Inscription : septembre 2011
Messages : 15
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : septembre 2011
Messages : 15
Points : 2
Points : 2
Par défaut 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 :
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 :
{"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
mika87 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/01/2012, 20h35   #2
Invité de passage
 
Homme
Inscription : septembre 2011
Messages : 15
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : septembre 2011
Messages : 15
Points : 2
Points : 2
J'ai modifié mon json pour avoir le format suivant :

Code :
1
2
 
{"avg":"3.50","votes":"3","serie":["0,0,0,0,0,0,1,0,0,0"]}
Et dans la fonction updateChart :

Code :
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 :
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 :
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
mika87 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/01/2012, 21h24   #3
Modérateur
 
Avatar de NoSmoking
 
Homme
Inscription : janvier 2011
Messages : 2 944
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Isère (Rhône Alpes)

Informations forums :
Inscription : janvier 2011
Messages : 2 944
Points : 4 776
Points : 4 776
Bonjour,
Citation:
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.
NoSmoking est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/01/2012, 22h03   #4
Invité de passage
 
Homme
Inscription : septembre 2011
Messages : 15
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : septembre 2011
Messages : 15
Points : 2
Points : 2
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 :
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 !
mika87 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 03h31.


 
 
 
 
Partenaires

Hébergement Web