2012-08-02 68 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