Partage
  • Partager sur Facebook
  • Partager sur Twitter

XMLHttpRequest sous IE

    1 novembre 2006 à 1:26:54

    Bonjour,

    J'ai une fonction permettant de créer un objet XMLHttpRequest, mais le problème, c'est qu'elle ne fonctionne pas sous IE. Par contre, elle fonctionne sous Firefox, Opera... . Je vous montre la fonction :
    var xhr = null;

    function getXhr() {
      if(window.XMLHttpRequest) { // Firefox et autres
        xhr = new XMLHttpRequest();
      }
      else if(window.ActiveXObject){ // Internet Explorer
        try {
          xhr = new ActiveXObject("Msxml2Microsoft.XMLHTTP");
        }
        catch(e) {
          try {
            xhr = new ActiveXObject("Microsoft.XMLHTTP");
          }
          catch(ee) {
            xhr = false;
          }
        }
      }
      else { // XMLHttpRequest non supporté par le navigateur
        alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
        xhr = false;
       }
    }


    Normalement, elle devrait m'afficher un message disant que ça ne fonctionne pas, mais elle essai de créer l'objet qui ne donne aucun résultat lorsque je l'utilise et qui me déclare une erreur sous IE.

    J'ai quand même une méthode alternative qui fonctionne si aucun objet n'est créé (et qui prend la relève dans ce cas-ci), mais comme je sais que IE sait parfaitement comment faire (c'est quand même microsoft qui a mis au point cette technique), j'aimerais trouver une solution.

    J'espère avoir été assez clair (même si j'en doute).

    Merci
    • Partager sur Facebook
    • Partager sur Twitter
      1 novembre 2006 à 10:59:30

      Hmm, ta fonction je l'ai testée elle marche Oo
      Mais dans le cas où elle ne réussirait pas à créer XMLHttpRequest sur ie, ça ne va pas mettre de message d'erreur:

      function getXhr() {
        var xhr = null;
        if(window.XMLHttpRequest) { // Firefox et autres
          xhr = new XMLHttpRequest();
        }
        else if(window.ActiveXObject){ // Internet Explorer
          try {
            xhr = new ActiveXObject("Msxml2Microsoft.XMLHTTP");
          }
          catch(e) {
            try {
              xhr = new ActiveXObject("Microsoft.XMLHTTP");
            }
            catch(ee) {
              xhr = false;
            }
          }
        }
        if( !xhr)
        { // XMLHttpRequest non supporté par le navigateur
          throw "Votre navigateur ne supporte pas les objets XMLHTTPRequest...";
        }
        return xhr;
      }

      J'ai modifié trois choses:
      -J'ai mis la déclaration de la variable xhr à l'intérieur de la fonction, ce qui fait que ce n'est plus une variable globale, c'est plus pratique quand tu as besoin d'utiliser plusieurs objet XMLHttpRequest à la fois.
      Vu que la variable n'est plus globale, il faut aussi rajouter return xhr;
      -J'ai remplacé else { // XMLHttpRequest non supporté par le navigateur
      Par if( !xhr) ce qui permet de vérifier que xhr a bien été créé.
      -J'ai remplacé aussi la fonction alert() par une commande throw (les exceptions sont visibles dans la console du navigateur), quand tu as une page web qui fait 1 requêtes ajax toute les secondes, l'erreur qui apparait dans un alert() c'est pas agréable (en général, faut faire ctrl + alt + suppr pour killer le browser :-° ).
      • Partager sur Facebook
      • Partager sur Twitter
        2 novembre 2006 à 0:37:55

        Merci de tes conseils :D Je les ai mit en oeuvre.
        Malheureusement, le problème ne venait pas de là... J'avais simplement un ./ au début du lien demandé par GET :s Décidemment, IE m'impressionnera toujours à pointiller sur certains détails qui devraient néanmoins fonctionner...

        Merci
        • Partager sur Facebook
        • Partager sur Twitter

        XMLHttpRequest sous IE

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown