English 中文(简体)
How to make a function execute only after certain function completes?
原标题:
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);

        }
}

Hereafter completion of the drawchart(data) method only I want to execute the below code but unfortunately the function HumbleFinance.init is being called with empty data.

Please tell me how to solve this. I can t put the below code inside the drawChart(data) function

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

});
});
问题回答

Your call to HumbleFinance.init() is happening before you get your ajax response and process the data results. You need to make sure you process your ajax response before you call this init. To do that, you just move the init call to within the onSuccess callback, after the drawChart method call.

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

    });
});




相关问题
selected text in iframe

How to get a selected text inside a iframe. I my page i m having a iframe which is editable true. So how can i get the selected text in that iframe.

How to fire event handlers on the link using javascript

I would like to click a link in my page using javascript. I would like to Fire event handlers on the link without navigating. How can this be done? This has to work both in firefox and Internet ...

How to Add script codes before the </body> tag ASP.NET

Heres the problem, In Masterpage, the google analytics code were pasted before the end of body tag. In ASPX page, I need to generate a script (google addItem tracker) using codebehind ClientScript ...

Clipboard access using Javascript - sans Flash?

Is there a reliable way to access the client machine s clipboard using Javascript? I continue to run into permissions issues when attempting to do this. How does Google Docs do this? Do they use ...

javascript debugging question

I have a large javascript which I didn t write but I need to use it and I m slowely going trough it trying to figure out what does it do and how, I m using alert to print out what it does but now I ...

Parsing date like twitter

I ve made a little forum and I want parse the date on newest posts like twitter, you know "posted 40 minutes ago ","posted 1 hour ago"... What s the best way ? Thanx.

热门标签