Ich mache mehrere Ajax-Aufrufe und ich möchte ein Diagramm im modalen Fenster zeigen, nachdem ich auf den Symbolnamen geklickt habe. Im Moment kann ich das Diagramm nur für das letzte Symbol sehen. Für das erste Symbol ist das modale Fenster leer. Ich verstehe, dass bei jedem Ajax-Aufruf die neue Diagrammfunktion das vorherige Ergebnis überschreibt und ein neues Diagramm im letzten modalen Fenster anzeigt. Aber wie kann ich noch alle vorherigen Diagramme anzeigen und neue im lsat-Fenster anzeigen?Wie können Diagramme nach mehreren Ajax-Aufrufen in verschiedenen modalen Fenstern angezeigt werden?
var stocks = [];
window.onload = function() {
var symbols = ['AAPL', 'MSFT', 'FB'];
symbols.forEach(symbol => makeAjaxCall(symbol));
}
function makeAjaxCall(param){
$.ajax({
type: "GET",
url: "https://www.alphavantage.co/query?function=TIME_SERIES_INTRADAY&symbol=" + param + "&interval=1min&apikey=T6UEJETEQRVGDJS9",
success: function(result){
stocks = result;
getPrices();
}
});
}
function getPrices() {
var metaData = stocks["Meta Data"],
timeSeries = stocks["Time Series (1min)"],
sym = metaData["2. Symbol"];
var mdl1 = '<div id="chartModal" class="modal fade" role="dialog">' +
'<div class="modal-dialog modal-lg" role="content">' +
'<div class="modal-content">' +
'<div class="modal-header">' +
'<h4>',
mdl2 = '</h4>' +
'<button type="button1" class="close" data-dismiss="modal">×</button>' +
'</div>' +
'<div class="modal-body" id="modalBody">' +
'<div class = "container-canvas">' +
'<canvas class = "line-chart" width = "400" height = "250"></canvas>' +
'</div>' +
'</div>' +
'</div>' +
'</div>' +
'</div>',
mdl3 = mdl1 + sym + mdl2;
document.getElementById("loadedStocks").innerHTML += '<div class="eachStock"><span><a onclick="showChart()">' + sym + '</a></span></div><div></div>' + mdl3;
var datasetsValues = Object.values(timeSeries),
datasetsValuesReverse = datasetsValues.reverse();
highPrice = Object.values(datasetsValuesReverse).map(o => o["4. close"]),
dateKeys = Object.keys(timeSeries),
datesReverse = dateKeys.reverse();
var ctx = document.getElementById('loadedStocks').querySelectorAll('.line-chart');
var last = ctx[ctx.length - 1];
new Chart(last, {
type: 'line',
data: {
labels: datesReverse,
datasets: [{
data: highPrice,
borderColor: "#FF4500",
label: "Close",
fillset: "#FFDAB9"
}],
pointStyle: "cross",
},
options: {
title: {
display: true,
text: "Stock's close price changes"
}
}
});
}
function showChart() {
$('#chartModal').modal();
}
Mein html:
<div id='loadedStocks'></div>
Dank!
Hallo Mikey! Ich danke dir sehr!!! Ich habe es in den letzten Tagen versucht und konnte nicht alle Charts anzeigen. Aber jetzt funktioniert es genau so, wie ich es wollte. – Olga