2012-05-14 47 views
1

我想动态加载数据到Highcharts,但我有问题。我试图用很多方法来完成这项工作,并且数据似乎已经加载到了JS中,但图形没有绘制出来。Highcharts加载数据,而不是绘图

目前,这是我的代码在jQuery的document ready功能:

options = { 
    chart: { 
     renderTo: 'container', 
     zoomType: 'x', 
     animation: true, 
    }, 
    title: { 
     text: null 
    }, 
    subtitle: { 
     text: null 
    }, 
    xAxis: { 
     type: 'datetime', 
     title: { 
      text: null 
     }, 
    }, 
    yAxis: { 
     title: { 
      text: 'Size', 
     }, 
    }, 
    legend: { 
     enabled: false 
    }, 

    series: [{ 
     data: [] 
    }] 
} 

$.ajax({ 
     type: "GET", 
     url: "works/load_data.php", 
     data: "id=3&mdate=2012-02&mxdate=2012-03", 
     success: function (items) { 

      var obj = eval(items).load; 
      var series = { data: [] }; 

      $.each(obj, function (itemNo, item) { 
       series.data.push(item); 
      }); 

      options.series.push(series); 

     }, 
     cache: false, 
}); 
var chart = new Highcharts.Chart(options); 

什么也没有发生在图形上。至少 data = {load:[ {x: Date.UTC(2012,2,1,7,15), y: 0.012},{x: Date.UTC(2012,2,1,7,30), y: 0.068} ... ]}

似乎是好了,对我说:但是,如果我登录到控制台图表选项我得到这个:

enter image description here

我的PHP是呼应这样的数据。但它不工作:(有人能告诉我,我做错了什么?谢谢。

+0

某种现场演示总是很方便:)。 – Styxxy

+0

@Styxxy很难,因为ajax获取请求。 – TCB13

回答

2

AJAX是异步的,这意味着调用发生在渲染图。尝试你的成功事件后坚持的图表创建,像这样经过:

$.ajax({ 
     type: "GET", 
     url: "works/load_data.php", 
     data: "id=3&mdate=2012-02&mxdate=2012-03", 
     success: function (items) { 

      var obj = eval(items).load; 
      var series = { data: [] }; 

      $.each(obj, function (itemNo, item) { 
       series.data.push(item); 
      }); 

      options.series.push(series); 


      var chart = new Highcharts.Chart(options); 

     }, 
     cache: false, 
}); 
+0

它这样工作,非常感谢你! – TCB13

+1

@ TCB13没问题。顺便说一句,你不应该使用eval(查看“eval is evil”),而是考虑JSON.parse()。 –

相关问题