quel est le délai maximum qui peut être défini dans jquery ajax?

$.ajax( url:"", async: true, timeout: 2*60*60*1000, //2 hours, success: function(){}, error: function(){} ); 

Dans une requête ajax jQuery, si je mets le délai d’expiration avec une valeur importante ou si je le laisse vide, restra-t-il en attente jusqu’à ce que le serveur retourne un résultat?

En fait, je pense que le serveur répondra dans 1,5 heure. Dans mon script js, le délai d’attente a été défini sur 2 heures, mais j’ai trouvé le saut Ajax vers la fonction d’erreur (avec le code msg 404) en moins d’une heure. Cela signifie ajax abandonner l’attente en avance sur le temps.

Je me demande donc s’il existe une valeur de délai d’expiration maximal.

Ma réponse précédente était fausse (le délai d’attente semblait trop court et je ne pouvais pas le croire moi-même). J’ai donc fait un test hier, créé un zip de 1 Go, puis étranglé ma connexion avec le violoneux et écrit cette page aspx.

 public partial class Ajaxtest : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { Response.Clear(); Response.BufferOutput = false; Response.WriteFile("c://OnTheMoveOffline.zip"); } } 

puis j’ai exécuté ce script (il est intéressant de noter que le violoniste a explosé avec l’exception OutOfMemory dans les 10 secondes qui ont suivi, mais la réponse a été conservée).

 var f = function(){ var compareDate = new Date(); $.ajax({ url : 'http://localhost:22037/FeatureDev/Ajaxtest.aspx', success: function(data){ console.log(Math.abs(new Date() - compareDate));}, error : function(e){ console.log(Math.abs(new Date() - compareDate));}, timeout : 10000000 }).done(function() { console.log(Math.abs(new Date() - compareDate)); }) .fail(function() { console.log(Math.abs(new Date() - compareDate)); }) .always(function() { console.log(Math.abs(new Date() - compareDate)); });} 

Il est revenu avec

 9393076 9393081 9393081 

9393076/1000 ~ 9393 (s) = 02:36:33

Ce qui équivaut à ~ 156 minutes.

Je vais répéter ce test ce week-end pour voir s’il va expirer après le même temps, mais jusqu’à présent, il semble qu’il soit supérieur à 7200000 (2 * 60 * 60 * 1000).

La valeur globale par défaut de timeout est 0, ce qui signifie qu’il est infini.