0

一旦调用提交按钮,此图表就会即时构建。该图表使用正确的系列名称呈现,但不显示任何线条。我的 Highcharts 图表中有一个 $.get 调用,如下所示:

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);
4

1 回答 1

0

你只是,做错了。这不是 ajax 的工作方式。AJAX 是异步的,因此不返回任何内容,而是进行回调。

data: $.get(...)

是问题所在,因为 $.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/

于 2012-08-02T21:38:05.590 回答