Zeichnen Sie ein Chart.js mit ajax Daten und reaktionsschnell. Ein paar Probleme und Fragen
Ich bin mit Chart.js (http://www.chartjs.org/docs/) für die Diagrammerstellung.
Ich brauche, um die Daten aus einer Ajax-Anfrage und das Diagramm zu reagieren.
In meinem HTML-code, den ich Hinzugefügt ein Leinwand wie folgt:
<div>
<canvas id="userscreated" class="plot" data-url="/stats/userscreated"></canvas>
</div>
Und in meinem javascript (JQuery) code, den ich habe:
var data2;
$.ajax({
url: $('#userscreated').data('url'),
async: true,
dataType: 'json',
type: "get",
}).done(function (data) {
data2 = data;
//Draw chart
var context = $('#userscreated').get(0).getContext("2d");
var wrapper = $('#userscreated').parent();
var width = $('#userscreated').attr('width', $(wrapper).width());
new Chart(context).Line(
{
labels: data.Dates,
datasets: [
{ fillColor: #404040, data: data.Users }
]
},
{ animation: false }
);
});
//Redraw the chart with the same data
$(window).resize(function () {
var context = $('#userscreated').get(0).getContext("2d");
var wrapper = $('#userscreated').parent();
var width = $('#userscreated').attr('width', $(wrapper).width());
new Chart(context).Line(
{
labels: data2.Dates,
datasets: [
{ fillColor: #404040, data: data2.Users }
]
},
{ animation: false }
);
});
PROBLEME
- Das Diagramm wird nicht geändert auf Fenster Größe ändern.
- Ist es besser, code, dies zu tun? Ich glaube, ich wiederhole zu viel code.
- In Google die Zeichnung ist schnell. In firefox manchmal hängt es für eine Weile.
Ist irgendetwas falsch mit meinem code? - Sollte die Anforderung sein, async oder nicht?
Hier ist ein Artikel mit ajax-Daten codepedia.info/2015/04/...
InformationsquelleAutor Miguel Moura | 2013-11-10
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie machen asynchronen AJAX-calls kein problem. Es ist nur wichtig, dass Sie die setup-Diagramm nur nach dem Erfolgs-callback ausgelöst wird. Ansonsten bekommst du Probleme mit den canvas-Kontext nicht definiert wird. Der erste Aufruf respondCanvas funktioniert die Ersteinrichtung, während die nachfolgenden Aufrufe machen die Größenänderung.
Hier ist was für mich funktioniert:
Wenn Sie möchten, legen Sie eine kleine Verzögerung zwischen den anrufen, können Sie einen timeout:
Die Verzögerung wird Ihre Größenänderung schneller in den Fall, Sie haben ein großes dataset auf Ihr Diagramm.
Der wahre held, sagt
setup the chart only after the success callback fires
. Ich habe gerade eine Stunde auf das versuchen, zu verwenden Rückrufe zum ausfüllen der Daten....*SMH*InformationsquelleAutor Cameron Tinker
können Sie einstellen, dass in chart.js
InformationsquelleAutor melon24
Code:
InformationsquelleAutor Senjai