2012-08-02 70 views
0

該圖表是在調用提交按鈕後立即構建的。該圖表使用適當的系列名稱進行呈現,但不顯示任何線條。 我有一個$不用彷徨呼叫我Highcharts圖表所示:帶有自定義json響應的Highcharts系列數據

series: [   
    <% {"WEB1" => Farm.WEB, 
     "CAT1" => Farm.CAT, 
     "ELK1" => Farm.ELK, 
      }.each do |name, farm| %> 
    { 
    name: "<%= name %>", 
    pointInterval: <%= 1.day * 1000 %>, 
    pointStart: document.forms["myform"]["from"].value, 
    data: $.get("/farm/1", { 
     scope: "<%= name %>", 
     from: document.forms["myform"]["from"].value, 
     to: document.forms["myform"]["to"].value 
     } 
      }) 
    }, 
    <% end %>] 

其目的是恢復該自定義JSON哈希:

[{"x":"2012-07-10T17:00:00Z","y":0.015}] 

這一切工作。 get返回正確的散列。但是Highcharts不喜歡這樣。有沒有人有任何建議,我怎樣才能得到正確的格式?提前致謝!

編輯

這是我在想什麼..但它不工作..

function(data){ 
     var arr = new Array(); 
      $.each(data, function(index,obj) { 
       arr.push(obj.y); 
     });setData(arr); 

回答

0

你只是,這樣做是錯誤的。這不是ajax的工作原理。 AJAX是異步的,因此不會返回任何內容,而是進行回調。

data: $.get(...) 

是問題,因爲$不用彷徨犯規立即返回任何東西,但它也不阻止或中斷JS處理,因此瀏覽器將繼續執行JS的下一塊,你的AJAX調用被完成之前就。

這是你通常會這樣做的。您首先進行$ .get調用,並在完成時創建圖表。

$.get("/farm/1", { 
    scope: "<%= name %>", 
    from: document.forms["myform"]["from"].value, 
    to: document.forms["myform"]["to"].value 
    },function(data){ 
      // use the data that was received to build the highchart 
      chart=.... 
     } 
}); 

http://api.jquery.com/jQuery.get/

+0

謝謝,現在看來這樣的,但我怎麼能訪問的數據值?數據:數據[0]或類似的東西不起作用... – moduleWolf 2012-08-03 17:14:13

+0

沒關係我想通了!我只是使用上面的$ .each函數,然後做了一個chart.addSeries(data:arr)就像一個魅力! – moduleWolf 2012-08-03 17:35:03