【问题标题】:push string from ajax to array for AmCharts将字符串从 ajax 推送到 AmCharts 的数组
【发布时间】:2017-08-31 11:29:23
【问题描述】:

您好,我是 javascript 的菜鸟,我需要您的帮助。我想用我的 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 推送数据呢?

【问题讨论】:

  • 根据你的代码,dataProvider不是这里chart的属性,所以chart.dataProvider不应该是正确的
  • 但是当我输入这个时: value= {cat: 1, c1: 2, c2: 3};进入我的代码,它可以工作并绘制图表。

标签: javascript ajax http tcp


【解决方案1】:

你需要在推送新值之前初始化它chart.dataProvider = []

如果这有问题 - 您还可以检查它是否未定义,如果是 - 初始化它chart.dataProvider = chart.dataProvider? chart.dataProvider : []

最后,如果您的问题是关于 ajax 操作 - 尝试使用 Promises 或回调来等待推送操作。

希望对你有帮助

【讨论】:

    【解决方案2】:

    好吧,伙计们,我找到了非常简单的解决方案:

    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}
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-25
      • 2021-02-17
      • 1970-01-01
      相关资源
      最近更新 更多