我使用highcharts在网页上显示大约10个图表。我遇到的问题是图表只加载了一部分时间,通常约为50%。我不确定这是否相关,但第一张图是使用GDPC1.csv制作的,每次都会加载。
以下是我用来创建所有图表的代码:
var xmlhttp = new XMLHttpRequest();
var unratexml = new XMLHttpRequest();
var cpixml = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState==4 && xmlhttp.status==200) {
var d = csvToArray(xmlhttp.responseText);
var c = csvToArray(unratexml.responseText);
var x = csvToArray(cpixml.responseText);
createGDPChart(d);
createUNRATEChart(c);
createCPIChart(x);
}
}
xmlhttp.open("GET","GDPC1.csv",true);
xmlhttp.send();
unratexml.open("GET","UNRATE.csv",true);
unratexml.send();
cpixml.open("GET","test.csv",true);
cpixml.send();
我唯一能想到的是它与我的if语句有关,也许它在大多数情况下都是假的,但是我对javascript知之甚少知道要改变什么。提前谢谢。
答案 0 :(得分:1)
每个XMLHttpRequest
实例都是一个独立的请求。您必须为每个请求定义onreadystatechange
。像这样:
var xmlhttp = new XMLHttpRequest();
var unratexml = new XMLHttpRequest();
var cpixml = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState==4 && xmlhttp.status==200) {
var d = csvToArray(xmlhttp.responseText);
createGDPChart(d);
}
}
unratexml.onreadystatechange = function() {
if (unratexml.readyState==4 && unratexml.status==200) {
var c = csvToArray(unratexml.responseText);
createUNRATEChart(c);
}
}
cpixml.onreadystatechange = function() {
if (cpixml.readyState==4 && cpixml.status==200) {
var x = csvToArray(cpixml.responseText);
createCPIChart(x);
}
}
xmlhttp.open("GET","GDPC1.csv",true);
xmlhttp.send();
unratexml.open("GET","UNRATE.csv",true);
unratexml.send();
cpixml.open("GET","test.csv",true);
cpixml.send();