嗨我在javascript中使用了noob,我需要你的帮助。我想从我的MCU绘制带有实时数据的图表。但不知道如何将字符串推入数组。在此代码中,Array(chart.dataProvider)仍未定义
var chart = AmCharts.makeChart("chartdiv",{
...
"dataProvider":[],
});
function f() {
var req = new XMLHttpRequest();
req.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
var value = this.responseText; //get the response data as a string
// value= {cat: 1, c1: 2, c2: 3}; //this metod draw my chart but i want RT data...
alert(value); //output: {cat: 1, c1: 2, c2: 3}
chart.dataProvider.push(value);
chart.validateData();
}};
req.open("GET", "http://", true);
req.send();
}
也有效:
chart.dataProvider.push({ cat: 1, c1: 2, c2: 3 });
但是如何从XMLHttpRequest推送数据?
答案 0 :(得分:0)
在推送新值之前,您需要初始化它chart.dataProvider = []
。
如果这有问题 - 您还可以检查它是否未定义,如果是,请将其初始化chart.dataProvider = chart.dataProvider? chart.dataProvider : []
最后,如果你的问题是关于ajax操作 - 尝试使用Promises或回调来等待push操作。
希望有所帮助
答案 1 :(得分:0)
好的家伙我找到了非常简单的解决方案:
var input = this.responseText;
alert (input); // output: 1category500fColumn1000sColumn
var i = input.substring(0, input.indexOf('category'));
var ii = input.substring(input.indexOf('category')+8, input.indexOf('fColumn'));
var iii = input.substring(input.indexOf('fColumn')+7, input.indexOf('sColumn'));
chart.dataProvider.push({
cat: i,
c1: ii,
c2: iii});
所以它应该是这样的:
{cat: 1,
c1: 500,
c2: 1000}