IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

[AJAX] Fermer XHR si délai dépassé


Sujet :

JavaScript

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 27
    Points : 4
    Points
    4
    Par défaut [AJAX] Fermer XHR si délai dépassé
    Bonjour,

    Après le peu de réponse obtenu à mon précédent post , je me tente pour avoir une réponse à ma préoccupation du moment.

    Comme mentionné dans le titre du topic, je voudrais fermer ma fonction si le délai est dépassé.
    Car si le client doit attendre 10 à 20 sec je trouve que ça n'a plus aucun interet.
    Seulement voilà, comment faire.

    Je pensais utiliser setTimeOut comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    setTimeout(timeOut(xhr), 10000);
    avec la fonction suivante (l'idée c'est de valider le formulaire étant donné que l'accès au fichier est trop long)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    function timeOut(xhr) {
      xhr.abort();
      return document.getElementById('add2cart').submit();
    }
    Mais comment peut-on savoir quand le script "traine" et seulement quand il traine au bout de xx durée ?
    ça se passerait dans le onreadystatechange ?

    Cordialement

  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 661
    Points
    66 661
    Billets dans le blog
    1
    Par défaut
    teste le status dasn un setTimeout ?
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  3. #3
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    Le pb en faisant tout par script, c'est que même après l' abort(), le visiteur attendra peut-être toujours (suivant ce à quoi te sert Ajax dans ce cas) ...
    Quand j'ai eu à le faire, j'ai affiché un div d'attente dans lequel j'ai mis un bouton "Annuler" => c'est lui qui fait le abort()
    Comme ça c'est le visiteur qui décide d'annuler, si lui trouve que c'est trop long.
    Il faut que l'objet xhr soit déclaré en global pour être accessible via le bouton ...
    Pour tout savoir sur l'utilisation du forum

    En postant votre message, n'oubliez pas les Règles du Club.

  4. #4
    Membre expert
    Avatar de FremyCompany
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    2 532
    Détails du profil
    Informations personnelles :
    Âge : 32
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 2 532
    Points : 3 239
    Points
    3 239
    Par défaut
    Citation Envoyé par E.Bzz
    Le pb en faisant tout par script, c'est que même après l' abort(), le visiteur attendra peut-être toujours (suivant ce à quoi te sert Ajax dans ce cas) ...
    Quand j'ai eu à le faire, j'ai affiché un div d'attente dans lequel j'ai mis un bouton "Annuler" => c'est lui qui fait le abort()
    Comme ça c'est le visiteur qui décide d'annuler, si lui trouve que c'est trop long.
    Il faut que l'objet xhr soit déclaré en global pour être accessible via le bouton ...
    Pas nécéssairement...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    function x() {
      var xhr = getXhr();
      // ...
      document.getElementById("theAbortButton").onclick=function() {
        xhr.abort();
      }
    }
    Fremy
    Pour vos développements Web et une navigation agréable, le tout gratuit :
    1) IE 8 + IE7Pro (Si vous ne connaissez pas IE7Pro, essayez !)
    2) FF 3 + Web Developper Toolbar + AdBlockPlus + FireBug + GreaseMonkey

Discussions similaires

  1. [2014] Erreur 8645 - Délai dépassé. Comment identifier son origine ?
    Par deltro40 dans le forum Administration
    Réponses: 18
    Dernier message: 30/06/2016, 10h12
  2. ajax est xhr.status=0
    Par sebxid dans le forum jQuery
    Réponses: 1
    Dernier message: 25/05/2011, 13h16
  3. télécharger un fichier délais dépassé
    Par gilles_906 dans le forum VB.NET
    Réponses: 2
    Dernier message: 06/04/2011, 18h13
  4. [XL-97] Créer alerte délai dépassé
    Par JessieCoutas dans le forum Macros et VBA Excel
    Réponses: 17
    Dernier message: 11/08/2009, 14h10
  5. Réponses: 14
    Dernier message: 09/07/2009, 15h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo