2011-05-07 92 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)方法我只想执行下面的代码 ,但不幸的是,函数HumbleFinance.init正在用空数据调用。如何在某个功能完成后才能执行某个功能?

请告诉我如何解决这个问题。 我不能把下面的代码放在drawChart(数据)函数中

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'函数中。 – 2011-05-07 09:34:32

+0

一方面说明:你知道你在第二个代码片段('xmin'和'xmax')中创建全局变量,不是吗? – 2011-05-07 10:09:40

回答

0

你得到你的Ajax响应并处理数据结果之前,您对HumbleFinance.init()呼叫正在发生的事情里面。在您致电init之前,您需要确保处理您的ajax响应。为此,只需将init呼叫移动到onSuccess回调内,然后调用drawChart方法。

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

    }); 
}); 
相关问题