使用jQuery从XML加载Highcharts系列

时间:2012-09-14 20:47:54

标签: javascript jquery xml highcharts

我正在尝试使用jQuery从xml源填充高图系列。 XML文件是从R​​RDTool导出的,具有以下格式:

<data>
<row><t>1347559200</t><v>2.1600000000e+01</v></row>
<row><t>1347562800</t><v>2.1504694630e+01</v></row>
<row><t>1347566400</t><v>2.1278633024e+01</v></row>
.
.
.
</data>

我的方法是使用jQuery加载数据并将系列推送到图表:

$.ajax({
      type: "GET",
      url: "data/data.xml",
      dataType: "xml",
      success: function(xml) {
        var series = {  data: []
                    };

        $(xml).find("row").each(function()
        {
            var t = parseInt($(this).find("t").text())*1000
            var v = parseFloat($(this).find("v").text())
            series.data.push([t,v]);
        });
        options.series.push(series);
      }
  });

我最终收到以下错误:

  

意外值NaN解析y属性

我创建了一个JSFiddle来演示代码:http://jsfiddle.net/GN56f/

1 个答案:

答案 0 :(得分:2)

问题:

  • 您在宣布varoptions
  • 之前忘了chart
  • ;
  • 结束后忘记了options
  • Hava你在传递给options之前试图记录Highcharts?您传递了以下series

这是预期的结果?我认为没有。

series: [{
    name: 'Temperature',
    data: []
}, {
    data: [// data from xml]
}]
  • 您在完成请求之前创建了图表,因此options.series.data.push无效,您必须使用setData动态更新,但是有问题,您不知道有多长时间请求你参加,所以我建议你在success
  • 里面创建图表

请尝试以下方法。

success: function(xml) {
    $('row', xml).each(function() {
        options.series.data.push([t,v]);
    });
    //@todo: declare chart as global before the ajax function
    chart = new Highcharts.Chart(options);
}