khr2003
khr2003

Reputation: 1065

Calculating ajax call time before getting the response

I have finished a facebook app that uses php and ajax to get statisicts about friends and find best match. The app is using tabs and is working fine, however sometimes when I click on one tab to send ajax request and loading icon shows I do not get any response back and the loading icon keeps showing. Is there a way that I can count how many seconds an ajax call is taking so I redirect the user to an altertanive html page after x number of seconds?

Upvotes: 1

Views: 2042

Answers (2)

adiktofsugar
adiktofsugar

Reputation: 1509

Another option would be to set the timeout parameter of the of the xmlhttprequest object. In jQuery it's the timeout option in the options object.

$.ajax ({
    timeout: 1000,
    success: successCallback,
    error: function (req, error, errorStatus) {
        if (error == 'timeout') {
            //send them to other page....
        }
    }
});

You would probably want to put in some more error handlers though... also, since the xmlhttpobject2 has on timeout function callback, this process might be more streamlined now...

Don't quote me exactly on the syntax either. I'm writing this on my phone from memory....

Upvotes: 1

stecb
stecb

Reputation: 14766

To achieve what you'd like to obtain, you could call (after X seconds, using setTimeout()) a function that checks if the ajax response has been loaded. For example:

var responseLoaded = false;    

function checkIt(){
    if(!responseLoaded)
        window.location = "%http://alternative-page%"; 
}

setTimeout(checkIt,10000) //after 10 seconds

responseLoaded could be a global variable that can be set to true at the end of the ajax response. Or, alternatively, you could check if some DOM element or JS var is present (i.e. created by AJAX call) at that time (when the function has been called through setTimeout)

Then, You could use

Date.getTime()

To obtain the current timestamp. You can compare the timestamp at the beginning with the one at the end of the ajax response to see the total time it takes. (just if you want to check the average ajax loading time)

Upvotes: 1

Related Questions