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] window.XMLHttpRequest répond TRUE avec IE


Sujet :

AJAX

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 7
    Par défaut [AJAX] window.XMLHttpRequest répond TRUE avec IE
    Bonjour à tous,
    Voici le code que j'utilise pour récupérer un objet xmlhttprequest :
    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
     
    function getXmlHttpRequest(){
     
    var xhr = false;
     
    if( window.XMLHttpRequest ) {// Firefox et autres
    	   xhr = new XMLHttpRequest(); 
        	   alert("Firefox xmlhttp ........ ");   
    }
     else if(window.ActiveXObject){ // Internet Explorer 
    	alert("IE xmlhttp ... ");
    	   try {
                    xhr = new ActiveXObject("Msxml2.XMLHTTP");
                } catch (e) {
                	try{
    	                xhr = new ActiveXObject("Microsoft.XMLHTTP");
                    }catch (E) {
                    	xhr = false; 
                    	alert("xhr == false");
                    }
                }
    	}
     
    }
     
    var xhr = getXmlHttpRequest();
    Ca fonctionne très bien sous FIREFOX mais ca marche pas avec IE (version IE 6).

    J'ai mis les message d'alert pour debogger et à ma grande surprise, sous IE j'ai eu le message "Firefox xmlhttp ........ " donc le test window.XMLHttpRequest répond true.

    Mon vrai souci par la suite c'est que quand j'essaie d'accéder aux champs readyState ou status de l'objet xhr l'exécution du code javascript s'arrete et ca bug là ...

    Merci de votre aide.

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 12
    Par défaut
    Il ne manque pas un return(xhr); à la fin ta fonction ?

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 7
    Par défaut
    Oui il y a un return (xhr) dans mon code mais j'ai oublié en faisant le copier-coller ...
    sinon ca ne marcherait pas sous Firefox de tte façon.

    Est-ce que tu trouves ca normal que IE rentre dans le case window.XMLHttpRequest ?

    J'ai dejà fait un autre test, c'est de tester le nom du navigateur pour que avec Microsof Internet Explorer il rentre dans le cas ActiveXObject.
    Donc il rentre bien la, il crée un object ActiveXObject("Msxml2.XMLHTTP").

    Mais quand j'essaie d'accéder aux champs status et readyState ca plante ...


  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 7
    Par défaut
    Quelqu'un aurait dejà vu ce problème ?

    Ou bien, est-ce que cela pourrait provenir d'un autre problème ? genre des div qui manque ou des conneries comme ça ....

    De l'aide svp ...

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 12
    Par défaut
    T'as IE6 ou IE7 ?

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 7
    Par défaut
    Alors, avec IE 7 ca marche ... il prend en charge la création d'un objet XMLHttpRequest. Donc c'est comme le cas FIREFOX.

    Par contre avec IE 6, ca crée l'objet xhr (ActiveXObject dans ce cas) et ensuite ca plante dès que j'essaie de tester l'objet ou que j'essaie d'acceder à un champ ( status ou readyState)

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 12
    Par défaut
    Si tu fais un alert(xhr); après var xhr = getXmlHttpRequest();, qu'est ce que ça t'affiche ?

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 7
    Par défaut
    Alors sous firefox ca m'affiche :[object XMLHttpRequest], ensuite tout le reste du code ca marche ....

    Sous IE 7 ca m'affiche : [object],, ensuite tout le reste du code ca marche ....

    Sous IE 6 ca m'affiche : [object],, ensuite ca plante !!

    Donc IE me renvoie bien un objet mais bizarre ... on dirait que c'est pas un XMLHttpRequest ... car même le test suivant ca plante :

    ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    	xhr = getXmlHttpRequest();
    	alert(xhr);
     
    	if(xhr != false){ 
    		alert('debug 3 ...');
     
    		xhr.onreadystatechange = xhrFunction;
    		xhr.open ....
    Alors ca plante au niveau du test if(xhr != false).
    Ca plante également si j'essaie de faire alert(xhr.status) après le getXmlHttpRequest ... alors que ca affiche 0 avec IE7 ou FF

    De l'aide svp ...

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 12
    Par défaut
    C'est quoi le message d'erreur ?

  10. #10
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 7
    Par défaut
    Le pire c'est qu'avec IE j'ai aucun message d'erreur ....

    Mais j'ai résolu le problème en modifiant un test ... c'est ce test que javascript n'a pas supporté en IE6.

    J'ai changé if ( xhr != false ) en if (xhr) en ayant initialisé xhr à null et non à false comme j'ai fait avant.

    Et tout cela ca passe impéccable avec Firefox et IE7 et non avec IE6 ...

    Toujours est-il que mon test if ( window.XMLHttpRequest ) répond TRUE avec IE6 et il instancie un objet XMLHttpRequest et du coup, je pense que le cas des activeX c'est que pour IE 5.x


    Bref ..... c'est bizarre quand même

    Merci de ton aide !!

  11. #11
    Membre éclairé Avatar de a028762
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    419
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 419
    Par défaut Cas inverse pour moi, IE6 marche et pas IE7
    Bonjour, la discussion est vieille mais c'est encore d'actualité
    J'ai le fonctionnement inverse:
    cela marche avec IE6 et pas avec IE7 !
    pour FIREFOX :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xhr = new XMLHttpRequest();
    pour IE6
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xhr = new ActiveXObject("Microsoft.XMLHTTP");
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xhr = new ActiveXObject("Msxml2.XMLHTTP");
    mais IE7 reste rétif au onReadyStateChange

Discussions similaires

  1. Réponses: 2
    Dernier message: 15/12/2009, 13h59
  2. Réponses: 2
    Dernier message: 04/12/2009, 16h27
  3. [AJAX] Modifier les header (PHP) avec une requête XMLHttpRequest?
    Par Prosis dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 09/09/2008, 00h34
  4. [AJAX] window.opener avec destination dynamique
    Par wighie dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 02/11/2006, 18h56
  5. [Débutant] API WINDOWS pb de linker avec DEV-C++
    Par coolmaxou dans le forum Windows
    Réponses: 3
    Dernier message: 12/07/2005, 09h24

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