2012-06-28 1 views
10

Gibt es einen besten Ansatz, um "keine Daten" mit JqPlot zu behandeln?Wie behandelt man keine Daten in JqPlot

Unter der Annahme, dass ich json Daten mit einem Ajax-Aufruf bin raubend und schließlich keine Daten verfügbar sind, zB:

[['North'][0],['South'][0],['East'][0],['West'][0]] 
+0

Diese sehr geholfen. Sollte JQPlot kein leeres Plot zurückgeben, wenn keine Daten zu rendern sind, anstatt eine Ausnahme auszulösen? Für mich ist das ein gültiger Zustand, kein Fehler ... – Stefan

Antwort

13

Ich habe immer eine Bedingung, dass ich in meiner AJAX Funktion überprüfen, die nicht überprüft Ergebnisse. Wenn keine Ergebnisse auftreten, setze ich ein Diagramm so, dass es leer aussieht. Aus diesem Grund sollte var data = [[null]] tun, wobei data ein Parameter von jQuery.jqplot('chart', data, {}) ist. Der Wert von data könnte von einem Diagrammtyp abhängig sein, daher testete ich ihn für Linien-, Balken- und Kreisdiagramm, und es funktioniert gut.

Optional können Sie auch Legende und möglicherweise andere Teile der Handlung ausblenden. Für mich ist nur die data und Legende immer ausreichend.

2

var data = [null]; wird Fehler in der Konsole auslösen und JS-Skriptausführung weiter zu stoppen. Die bessere Lösung wird sein, das folgende zu verwenden.

Dies wird alle nachfolgenden Grafiken drucken und/oder die Ausführung von JS-Skripten ohne Fehler in FF/Chrome/IE-Konsolen fortsetzen. :-)

+0

Ich bin mir nicht sicher, wie das für Sie funktioniert - es wird fehlschlagen '$ .isArray (data [0]) == false || data [0] .length == 0' in https://github.com/jqPlot/jqPlot/blob/1870d3bedd96dc62b948196c4eb9dfd5833e763/src/jqplot.core.js#L2063 – user60561

2

In meinem Fall war es das Gegenteil von Rahis Antwort (vielleicht waren die fehlenden doppelten Klammern um null das Problem), was bedeutet, dass ich Boro zustimme;

Dies funktioniert: var data = [[null]]; und diese: var data = ['']; einen Fehler erzeugt, eine Zeit, egal, ob ich mehrere Diagramme oder nur eine ohne Daten haben.

Ich bin mit jqPlot 1.0.9

Der Fehler, den ich bekommen ist: Uncaught Error: No data specified aus dem Zustand, in dem jqPlot Skript

if (0 == this.noDataIndicator.show) 
        throw new Error("No data specified");