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 処理をブロックしたり中断したりしないため、ajax 呼び出しが完了する前であっても、ブラウザーは js の次のブロックを実行し続けるため、これが問題です。

これは、一般的に行う方法です。最初に $.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 に答える