2014-10-16 44 views
0

我在使用highcharts的网页上显示大约10个图。我遇到的问题是图表只会加载一部分时间,通常约为50%。我不确定这是否相关,但使用GDPC1.csv制作的第一个图形每次都会加载。HighCharts图不会加载一半的时间

这里是我使用创建的所有图形代码:

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知之甚少,不知道该怎么改变。提前致谢。

回答

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(); 
+0

谢谢,完美的答案。 – chrisz 2014-10-16 21:06:34