2012-08-02 5 views
0

이 차트는 제출 버튼이 호출되면 즉시 작성됩니다. 차트는 적절한 시리즈 이름으로 렌더링되지만 줄이 표시되지 않습니다. 이 사용자 정의 JSON 해시를 반환하도록 설계사용자 정의 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 %>] 

:

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

이 모든 일을 내 Highcharts이 같은 차트에 은 내가 $ 갔지 전화를 가지고있다. get는 적절한 해시를 반환합니다. 그러나 Highcharts는 이것을 좋아하지 않습니다. 아무도 내가 어떻게 적절하게 형식을 얻을 수있는 제안을 가지고 있습니까? 미리 감사드립니다! 당신이 잘못을하고, 단순히

이 내가 생각하고 무엇을 ..하지만이 작동하지 않습니다 ..

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

답변

0

편집 할 수 있습니다. 이것은 아약스가 작동하는 방식이 아닙니다. AJAX는 비동기식이므로 아무 것도 반환하지 않지만 대신 콜백을 수행합니다. $ 갔지 즉시 아무것도 반환 나던로

data: $.get(...) 

는 문제가 없지만, 어느 쪽도 아니는 차단하거나 JS 처리를 중단 않으며, 따라서 브라우저는 아약스 호출이 완료됩니다도 전에, 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/

+0

덕분에, 지금처럼 보이지만 어떻게 데이터 값에 액세스 할 수 있습니까? 데이터 : 데이터 [0] 또는 그와 같은 것은 작동하지 않습니다 ... – moduleWolf

+0

Nevermind 내가 알아 냈어! 방금 $ .each 함수를 사용하여 차트를 만들었습니다 .addSeries (data : arr) 매력처럼 작동했습니다! – moduleWolf

관련 문제