JQuery ajax call default timeout value
Asked Answered
D

5

79

I got a bug report that I can't duplicate, but ajax-call timeout is the current best guess.

So I'm trying to find out the default value for timeout of a jQuery $.ajax() call. Anybody have an idea? Couldn't find it in jQuery documentation.

Delaney answered 24/3, 2010 at 11:55 Comment(4)
Hmm, I think this is browser specific.Mal
#1342810Accommodating
https://mcmap.net/q/209905/-browser-timeoutsAccommodating
possible duplicate of What is jQuery's ajax default timeout value?Submerged
M
52

There doesn't seem to be a standardized default value. I have the feeling the default is 0, and the timeout event left totally dependent on browser and network settings.

For IE, there is a timeout property for XMLHTTPRequests here. It defaults to null, and it says the network stack is likely to be the first to time out (which will not generate an ontimeout event by the way).

Mal answered 24/3, 2010 at 12:0 Comment(3)
So basically jQuery doesn't use any default value for it. The problem was reported on Safari. I guess I'll just try to force some longish timeout value and hope for the best... Thanks!Delaney
@Delaney : did it actually work? I could not find whether timeout always overrides the browser's timeout value (even if your ajax timeout value is bigger than the browser's)Accommodating
@AdrienBe At the time IIRC I couldn't duplicate the problem from the users bug report, but the timeout issue was the best guess at the moment. So I don't really have an answer.Delaney
T
24

As an aside, when trying to diagnose a similar bug I realised that jquery's ajax error callback returns a status of "timeout" if it failed due to a timeout.

Here's an example:

$.ajax({
    url: "/ajax_json_echo/",
    timeout: 500,
    error: function(jqXHR, textStatus, errorThrown) {
        alert(textStatus); // this will be "timeout"
    }
});

Here it is on jsfiddle.

Twandatwang answered 7/11, 2012 at 23:19 Comment(1)
Yes, see all error types #3544183Accommodating
M
7

there is no timeout, by default.

Mcgough answered 24/7, 2014 at 4:29 Comment(5)
Could you share some source supporting your claim.Fractionate
I've just tested it and can confirm this.Pleurodynia
How can you test the absence of timeout ? It could be really long by defaultIow
some guys are still testing :/Storz
@Storz I've not given up! It's been almost 8 years now, but I'm sure I'm going to get that timeout error any time now!Craggy
G
2

The XMLHttpRequest.timeout property represents a number of milliseconds a request can take before automatically being terminated. The default value is 0, which means there is no timeout. An important note the timeout shouldn't be used for synchronous XMLHttpRequests requests, used in a document environment or it will throw an InvalidAccessError exception. You may not use a timeout for synchronous requests with an owning window.

IE10 and 11 do not support synchronous requests, with support being phased out in other browsers too. This is due to detrimental effects resulting from making them.

More info can be found here.

Graphy answered 3/4, 2017 at 7:43 Comment(0)
F
0

Please refer to this api info.

timeout
Type: Number
Set a timeout (in milliseconds) for the request. A value of 0 means there 
will be no timeout. This will override any global timeout set with 
$.ajaxSetup(). The  timeout period starts at the point the $.ajax call is made; 
if several other  requests are in progress and the browser has no connections 
available, it is  possible for a request to time out before it can be sent. In 
jQuery 1.4.x and  below, the XMLHttpRequest object will be in an invalid state if 
the request  times out; accessing any object members may throw an exception. In 
Firefox 3.0+  only, script and JSONP requests cannot be cancelled by a timeout; 
the script  will  run even if it arrives after the timeout period.
Fig answered 16/6, 2021 at 16:48 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.