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

AJAX Discussion :

[AJAX] Plantage sous IE


Sujet :

AJAX

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Mai 2008
    Messages
    317
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 317
    Par défaut [AJAX] Plantage sous IE
    Bonjour tout le monde.

    J'ai un petit soucis avec un script ajax avec les htmlhttprequest.
    Le script fonctionne très bien sous firefox, mais IE quitte violemment, sans message d'erreur au bout de quelques clic.
    Ce que je trouv bizarre c'est que c'est aléatoire: ça peu buguer des le premier clic, ou au bout de la 5-10em fois...
    Plus je clic vite, plus ça bug vite ^^

    getHeader est appelé dans getContent.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
     
    function getContent(parent_id) {
      var width = get_width('ged_title')-150;
      if(!parent_id){var parent_id='ged_0';}
      if(_xmlHttp&&_xmlHttp.readyState!=0) {
        _xmlHttp.abort()
      }
      _xmlHttp=getXMLHTTP();
      if(_xmlHttp) {
        _xmlHttp.open("GET","composants/ged/ged.php?parent="+parent_id+"&width="+width ,true);
        _xmlHttp.onreadystatechange=function() {
          if(_xmlHttp.readyState==4&&_xmlHttp.responseText) {
            document.getElementById( 'ged_content' ).innerHTML = _xmlHttp.responseText ;
            document.getElementById( 'ged_propriety' ).innerHTML = '' ;
            getHeader(parent_id);
            if (document.getElementById( 'ged_content' ).offsetHeight > 150) {
              document.getElementById( 'ged_arbo' ).style.height = document.getElementById( 'ged_content' ).offsetHeight + "px";
            }
            else {
              document.getElementById( 'ged_arbo' ).style.height = "150px";
            }
          }
        };
        _xmlHttp.send(null)
      }
    }
     
    function getHeader(id) {
      var _adresseRecherche = "composants/ged/path.php";
      if(_xmlHttp&&_xmlHttp.readyState!=0) {
        _xmlHttp.abort()
      }
      _xmlHttp=getXMLHTTP();
      if(_xmlHttp) {
        _xmlHttp.open("GET",_adresseRecherche+"?id="+id ,true);
        _xmlHttp.onreadystatechange=function() {
          if(_xmlHttp.readyState==4&&_xmlHttp.responseText) {
            document.getElementById( 'ged_title' ).innerHTML = _xmlHttp.responseText ;
          }
        };
        _xmlHttp.send(null)
      }
    }
    Merci Beaucoup

  2. #2
    Membre Expert
    Avatar de RomainVALERI
    Homme Profil pro
    POOête
    Inscrit en
    Avril 2008
    Messages
    2 652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : POOête

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 652
    Par défaut
    Il faudrait surtout qu'on voie comment tu instancies ton objet de transport : montre nous ta fonction getXMLHTTP, il y a peut-être une erreur à ce niveau ^^

    edit : heu attends il y a d'autres choses bizarres : tu appelles une méthode (abort) sur ton objet _xmlHTTP avant de l'instancier ? Si c'est, comme je l'imagine, pour éviter des appels ajax multiples... pourquoi utiliser une variable globale pour ton objet _xmlHTTP et le réinitialiser si il existe déjà... plutôt que d'instancier localement ton objet et de l'utiliser pour passer ton appel... ?

  3. #3
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Renseigne toi peut-être du coté des fuites de mémoire avec IE
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  4. #4
    Membre éclairé
    Inscrit en
    Mai 2008
    Messages
    317
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 317
    Par défaut
    Heu... je ne l'avais pas marqué par-ce que s'était du copier collé (je suis encore assez mauvais avec l'ajax ^^):
    Le problème ne viens pas de ce script.

    J'ai trouver le problème par rapport a ce que tu disais, et voici ce par quoi j'ai remplacer:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    function getData(parent_id) {
      getHeader(parent_id);
      getContent(parent_id);
    }
     
    function getContent(parent_id) {
      var width = get_width('ged_title')-150;
      if(!parent_id){var parent_id='ged_0';}
      if(_xmlHttp&&_xmlHttp.readyState!=0) {
        _xmlHttp.abort()
      }
      _xmlHttp=getXMLHTTP();
      if(_xmlHttp) {
        _xmlHttp.open("GET","composants/ged/ged.php?parent="+parent_id+"&width="+width ,true);
        _xmlHttp.onreadystatechange=function() {
          if(_xmlHttp.readyState==4&&_xmlHttp.responseText) {
            document.getElementById( 'ged_content' ).innerHTML = _xmlHttp.responseText ;
            document.getElementById( 'ged_propriety' ).innerHTML = '' ;
            getHeader(parent_id);
            if (document.getElementById( 'ged_content' ).offsetHeight > 150) {
              document.getElementById( 'ged_arbo' ).style.height = document.getElementById( 'ged_content' ).offsetHeight + "px";
            }
            else {
              document.getElementById( 'ged_arbo' ).style.height = "150px";
            }
          }
        };
        _xmlHttp.send(null)
      }
    }
     
    function getHeader(id) {
      var _adresseRecherche = "composants/ged/path.php";
      if(_xmlHttpp&&_xmlHttpp.readyState!=0) {
        _xmlHttpp.abort()
      }
      _xmlHttpp=getXMLHTTP();
      if(_xmlHttpp) {
        _xmlHttpp.open("GET",_adresseRecherche+"?id="+id ,true);
        _xmlHttpp.onreadystatechange=function() {
          if(_xmlHttpp.readyState==4&&_xmlHttpp.responseText) {
            document.getElementById( 'ged_title' ).innerHTML = _xmlHttpp.responseText ;
          }
        };
        _xmlHttpp.send(null)
      }
    }
     
    var _xmlHttp = null; 
    var _xmlHttpp = null;
    Je pense que le fait que j'utilise un même objet en même temps à du faire déconné IE.
    Avec le deuxième objet (_xmlhttpp) tout fonctionne parfaitement.

    Merci beaucoup =)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AJAX] xmlhttprequest sous IE7
    Par arena94 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 15/12/2006, 21h09
  2. gros plantage sous powerpoint
    Par -iMat- dans le forum Powerpoint
    Réponses: 2
    Dernier message: 10/09/2006, 15h45
  3. Plantage sous Win98 à la fermeture de l'application !
    Par Jeff on the web dans le forum Delphi
    Réponses: 5
    Dernier message: 16/06/2006, 07h29
  4. une requête SELECT INTO provoque un plantage sous Access
    Par Invité dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 29/12/2005, 11h35
  5. OPENROWSET avec l'analyseur: OK mais plantage sous 'DOS'
    Par Labienus dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 02/06/2004, 15h47

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