2015-09-15 14 views
5

Desidero aggiungere dati al grafico a barre di Morris tramite ajax. In seguito è la JSON, che ottengo in ajax successocome aggiungere dati dinamici al grafico a barre di morris

[{"x":"2014-10-02","y":"1"},{"x":"2014-10-19","y":"1"},{"x":"2014-10-20","y":"1"},{"x":"2014-11-13","y":"1"}]

seguito è riportato il codice js

var chart = Morris.Bar({ 
     element : 'normal-bar-graph', 
     data : [{ 
      "x" : null, 
      "y" : null 
     }], 
     xkey : 'x', 
     ykeys : ['y'], 
     labels : ['Added'] 
    }); 
$.ajax({ 
      type: "POST", 
      url: "some_url", 
      data: {'user_report':[k,v]}, 

      success: function(html)      
      { 
       if(html == "error") 
       { 
       alert('error'); 
       } 
       else 
       { 
        chart.setData(html); 

       } 
       hide_loading(); 
      } 
     }); 

sto usando /morris/raphael.2.1.0.min.js e /morris/morris.min.js. La funzionalità chart.setData(html); non funziona come detto nella documentazione di morris.

grazie in anticipo. per favore indicami se qualche errore è stato fatto.

hanno anche fatto un jsbin se questo può aiutare: morris

risposta

4

Rimuovere le virgolette. setData prevede un array. Quando usi le virgolette, lo converte in una stringa anziché in una matrice.

In questo modo: chart.setData([{ "y": "2006", "a": 100, "b": 90 },{ "y": "2006", "a": 100, "b": 90 }]);

+0

Ma mostra solo un grafico. Anche quando voglio ottenere dati via ajax, 'chart.setData()'. – dhpratik

+0

@dhpratik: cosa intendi con "* mostra solo un grafico *"? La soluzione fornita sopra dovrebbe funzionare altrimenti, non ci stai raccontando l'intera immagine. – D4V1D

+1

Sì. Sembra che fosse a causa di un bug - https://github.com/morrisjs/morris.js/issues/105 Aggiorna i tuoi script all'ultima versione del grafico a barre di morris e tutto funziona. http://jsbin.com/kiduwuseda/edit?html,js,output. Ma la mia soluzione originale è la soluzione alla tua domanda. – afrin216

Problemi correlati