2011-05-07 9 views
1
Event.observe(document, 'dom:loaded', function() { 

    new Ajax.Request('/HumblFin/Serv', { 
     method:'get', 
     onSuccess: function(transport){ 
      var data = transport.responseText.evalJSON(); 
      drawChart(data); 
     }, 
     onFailure: function(){ alert('Something went wrong...') } 
    }); 


function drawChart(data) 
{ 

    for (var i = 0; i < data.jobs.length; i++) { 
     priceData.push([i, data.jobs[i].INCPU]); 
     dateData.push(data.jobs[i].Dater); 

     } 
} 
drawchart(data) 이후에 drawchart(data) 메소드 완성 이제 아래 코드 를 실행하고 싶지만 불행하게도 HumbleFinance.init 함수는 빈 데이터로 호출됩니다.

특정 함수가 완료된 후에 만 ​​함수를 실행하는 방법?

이 문제를 해결하는 방법을 알려주십시오. 아래 코드를 drawChart (data) 함수 안에 넣을 수 없습니다.

HumbleFinance.init('finance', priceData , dateData); 
Event.observe(HumbleFinance.containers.summary, 'flotr:select', function (e) { 

    var area = e.memo[0]; 
    xmin = Math.floor(area.x1); 
    xmax = Math.ceil(area.x2); 

    var date1 = dateData[xmin]; 
    var date2 = dateData[xmax]; 

    $('dateRange').update(dateData[xmin] + ' - ' + dateData[xmax]); 

}); 
}); 
+2

'onSuccess' 기능에 넣으십시오. –

+0

한 쪽 메모 : 두 번째 코드 조각 ('xmin' 및'xmax')에서 전역 변수를 작성한다는 것을 알고 계십니까? –

답변

0

내부에 아래 코드를 삽입 할 수 없습니다. 이 init을 호출하기 전에 아약스 응답을 처리해야합니다. 그러려면 drawChart 메서드 호출 후 onSuccess 콜백 내에서 init 호출을 호출하면됩니다.

<script> 
Event.observe(document, 'dom:loaded', function() { 

    new Ajax.Request('/HumblFin/Serv', { 
     method:'get', 
     onSuccess: function(transport){ 
      var data = transport.responseText.evalJSON(); 
      drawChart(data); 

      //Put your HumbleFinance.init call here, 
      //after the priceData and dateData has been generated. 
      HumbleFinance.init('finance', priceData , dateData); 
     }, 
     onFailure: function(){ alert('Something went wrong...') } 
    }); 

    Event.observe(HumbleFinance.containers.summary, 'flotr:select', function (e) { 

     var area = e.memo[0]; 
     xmin = Math.floor(area.x1); 
     xmax = Math.ceil(area.x2); 

     var date1 = dateData[xmin]; 
     var date2 = dateData[xmax]; 

     $('dateRange').update(dateData[xmin] + ' - ' + dateData[xmax]); 

    }); 
}); 
관련 문제