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(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]);
});
});
最佳答案
您对 HumbleFinance.init()
的调用是在获得 ajax 响应并处理数据结果之前发生的。您需要确保在调用此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]);
});
});
关于javascript - 如何让一个函数只在某个函数完成后才执行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5920096/