77 votes

Valeur par défaut du délai d'appel ajax de JQuery

J'ai reçu un rapport de bogue que je ne peux pas reproduire, mais le délai d'appel d'ajax est la meilleure hypothèse actuelle.

J'essaie donc de trouver la valeur par défaut du délai d'attente d'une application jQuery $.ajax() appel. Quelqu'un a une idée ? Je ne l'ai pas trouvé dans la documentation de jQuery.

Merci d'avance, Marcus

1 votes

Hmm, je pense que c'est spécifique au navigateur.

1 votes

0 votes

52voto

Pekka 웃 Points 249607

Il ne semble pas y avoir de valeur par défaut normalisée. J'ai l'impression que la valeur par défaut est 0 et le délai d'attente dépend totalement des paramètres du navigateur et du réseau.

Pour IE, il existe une propriété de délai d'attente pour les requêtes XMLHTTPRequests aquí . La valeur par défaut est null, et il est dit que la pile réseau sera probablement la première à perdre le temps de fonctionnement (ce qui sera pas génère un événement ontimeout d'ailleurs).

0 votes

En fait, jQuery n'utilise pas de valeur par défaut pour ce paramètre. Le problème a été signalé sur Safari. Je suppose que je vais essayer de forcer une valeur de timeout assez longue et espérer le meilleur... Merci !

1 votes

@Marcus : est-ce que cela a fonctionné ? Je n'ai pas trouvé si le délai d'attente est toujours prioritaire sur celui du navigateur (même si votre délai d'attente ajax est plus grand que celui du navigateur).

0 votes

@AdrienBe À l'époque, je n'ai pas pu reproduire le problème à partir du rapport de bogue des utilisateurs, mais la question du délai d'attente était la meilleure hypothèse à ce moment-là. Je n'ai donc pas vraiment de réponse.

22voto

Jonathan Moffatt Points 4322

Par ailleurs, en essayant de diagnostiquer un bogue similaire, je me suis rendu compte que la fonction d'appel d'erreur ajax de jquery renvoie un statut "timeout" si elle a échoué en raison d'un délai d'attente.

Voici un exemple :

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

Le voici sur jsfiddle .

0 votes

Oui, voir tous les types d'erreurs stackoverflow.com/questions/3543683/

6voto

lwpro2 Points 5331

Il n'y a pas de délai d'attente, par défaut.

2 votes

Pourriez-vous partager une source soutenant votre affirmation ?

0 votes

Je viens de le tester et je peux le confirmer.

9 votes

Comment tester l'absence de délai d'attente ? Il pourrait être très long par défaut

1voto

bodi0 Points 3900

El XMLHttpRequest.timeout représente le nombre de millisecondes que peut prendre une requête avant d'être automatiquement interrompue. La valeur par défaut est 0 ce qui signifie qu'il y a n'est pas temps d'arrêt. Une note importante : le délai d'attente ne doit pas être utilisé pour les systèmes synchrones. XMLHttpRequests utilisées dans un environnement de documents, sinon un message d'erreur sera généré. InvalidAccessError exception. Vous ne pouvez pas utiliser de délai d'attente pour les requêtes synchrones avec un fichier de type posséder fenêtre.

IE10 et 11 ne prennent pas en charge les requêtes synchrones, et cette prise en charge est progressivement abandonnée par les autres navigateurs. Ceci est dû à effets néfastes résultant de leur réalisation.

Plus d'informations sont disponibles aquí .

0voto

Bhaskara Arani Points 466

Veuillez vous référer à cette info api.

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.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X