如何使javaScript事件在顺序/序列中执行

时间:2011-04-19 13:02:02

标签: javascript prototypejs

我正在使用prototype.js。

这是我的代码:

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

}

HumbleFinance.init('finance', priceData , dateData);

HumbleFinance.init('finance', priceData , dateData);负责显示图表。

问题是,HumbleFinance.init的调用时间早于AJAX调用,所以显示空图表。

请告诉我如何将Ajax调用返回的数据提供给函数HumbleFinance.init('finance', priceData , dateData);

2 个答案:

答案 0 :(得分:2)

不知道data是什么以及它与HumbleFinance.init的关系,只是将函数调用放在回调中:

Event.observe(document, 'dom:loaded', function() {
    new Ajax.Request('/HumblFin/Serv', {
         method:'get',
         onSuccess: function(transport){
            var data = transport.responseText.evalJSON();
            HumbleFinance.init('finance', priceData , dateData);
            drawChart(data);
         },
         onFailure: function(){ alert('Something went wrong...') }
    });
});

答案 1 :(得分:0)

值得注意的是,如果请求的Content-type设置为application/json,则prototype会自动评估JSON。

您可以var data = transport.responseJSON;

的形式访问它