2011-07-10 12 views
6

State cercando e non riesco a trovare esattamente quello che sto cercando. È necessario caricare più serie in un jqplot, con ogni serie proveniente dal proprio file di dati.Ad esempio per caricare jqplot con più serie, dati basati sulla data dal file json

L'esempio qui http://www.jqplot.com/tests/data-renderers.php mostra come caricare una serie da un file, ma quando converto il file per avere dati di data, quindi smette di funzionare, probabilmente solo un problema di formattazione, ma non può risolvere. Che cosa sto facendo di sbagliato?

Ecco i dati nel file txt: [["7/11/2011 04:00:00 am", 85,0], ["7/12/2011 04:00:00 AM", 87,4], [ "2011/07/13 04:00:00", 90,0]]

Ecco il codice:

<script class="code" type="text/javascript">$(document).ready(function(){ 
    var line = [ ]; 
var ajaxDataRenderer = function(url, plot) { 
    var ret = null; 
    $.ajax({ 
     // have to use synchronous here, else returns before data is fetched 
     async: false, 
     url: url, 
     dataType:'json', 
     success: function(data) { 
      ret = data; 
     } 
    }); 
    return ret; 
}; 

var jsonurl = "./jsondata1.txt"; 

plo12 = $.jqplot('chart2', jsonurl,{ 
    title: 'AJAX JSON Data Renderer', 
    dataRenderer: ajaxDataRenderer, 
    axes: { 
     xaxis: { 
      renderer:$.jqplot.DateAxisRenderer, 
      tickInterval: '1 day', 
      tickOptions:{formatString:'%y/%m/%d'} 
     } 
    } 
}); 
});</script> 

risposta

2

è possibile utilizzare il parametro dataRendererOptions di dichiarare eventuali file, in questo modo:

plo12 = $.jqplot('chart2', jsonurl,{ 
    title: 'AJAX JSON Data Renderer', 
    dataRenderer: ajaxDataRenderer, 
    dataRendererOptions: {file1:'name_of_file_1', file2:'name_of_file2'} 
    axes: { 
     xaxis: { 

Prossimo uso per-ciascuno per iterare attraverso il dataRendererOptions - Ob ject:

var ajaxDataRenderer = function(url, plot,op) { 
    var ret = null; 
$.each(op,function(i,n) { 
    $.ajax({ 
     // have to use synchronous here, else returns before data is fetched 
     async: false, 
     url: url+'/'+i, 
     dataType:'json', 
     success: function(data) { 
      ret[]= data; 
     } 
    }); //end ajax 
});//end each 
return ret; 
} 

Questo codice non è testet, ma l'idea alla base potrebbe soddisfare le vostre esigenze.

+0

Quindi, se capisco che l'oggetto 'dataRendererOptions' sarà accessibile all'interno del metodo' ajaxDataRenderer' sotto la variabile 'op'? Se è così che funziona allora (+1). Per favore, puoi collegarmi ad una spiegazione per dire che cosa esattamente questa strana notazione (vale a dire la prima volta vista) significa: 'ret [] = dati;'? – Boro

+0

@Boro 'ret [] = dati;' <- questo è un anno fa, domanda difficile! ;-) bene: se ricordo bene, questo significa: definire 'ret' come un' array'/'oggetto' e assegnare/aggiungere' data' come uno (nuovo) Elemento –

+0

Grazie, The Bndr, per la riproduzione. Quindi se capisco bene è equivalente a questa notazione: 'ret = [dati];', giusto? – Boro

Problemi correlati