2012-05-14 46 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()。 –

相關問題