Partage
  • Partager sur Facebook
  • Partager sur Twitter

httprequest ne fonctionne pas sous ie

    5 octobre 2009 à 22:32:45

    Bonjour,
    je rencontre un pb d'affichage de requête javascript sous IE : La page ci-dessous a pour but d'afficher, à partir d'un clic, le contenu d'une page (ci-dessous la page "texte.html") dans une DIV appelée "contenu".
    Le script fonctionne parfaitement sous FF mais la requête ne fonctionne pas sous ie : avec ie7, en cliquant sur mon bouton, j'ai un triangle jaune en bas à gauche de l'écran qui précise "erreur sur la page" et la DIV "contenu" reste vide.


    Voici le code de la page principale qui contient également les fonctions js
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <title>index</title>
    <script type="text/javascript;">
    // Fonction pour Ajax
    function getXMLHTTP() {
    	var xhr = null;
    	
    	if (window.XMLHttpRequest || window.ActiveXObject) {
    		if (window.ActiveXObject) {
    			try {
    				xhr = new ActiveXObject("Msxml2.XMLHTTP");
    			} catch(e) {
    				xhr = new ActiveXObject("Microsoft.XMLHTTP");
    			}
    		} else {
    			xhr = new XMLHttpRequest(); 
    		}
    	} else {
    		alert("Votre navigateur ne supporte pas l'objet XMLHTTPRequest...");
    		return null;
    	}
    	
    	return xhr;
    }
    
    
    // Div ajout.
    function getDiv1(MyDiv, MyUrl) { 
    var xmlhttp1 = null;  
    	var mondiv1 = document.getElementById(MyDiv); 
    	if (!mondiv1) { 
      		return 1; 
      	} 
         if (xmlhttp1 && xmlhttp1.readyState != 0) { 
            xmlhttp1.abort(); 
    	} 
    	xmlhttp1 = getXMLHTTP(); 
        if (xmlhttp1) { 
    		xmlhttp1.open("GET", MyUrl, true);  
     
         	/* on définit ce qui doit se passer quand la page répondra */ 
           	xmlhttp1.onreadystatechange = function() { 
       	      		if (xmlhttp1.readyState == 4 && xmlhttp1.responseText != '') /* 4 : état "complete" */ { 
    			mondiv1.innerHTML = xmlhttp1.responseText; 
          		}
    		} 
          	xmlhttp1.send(null); 
         } 
    }
    </script>
    </head>
    
    <body>
    <div id="corps">
    <a href="#" onclick="getDiv1('contenu','texte.html');">Clic pour avoir texte</a>
    <div id="contenu">
    </div>
    </div>
    
    </body>
    
    </html>
    


    Et voici le contenu de la page texte.html
    <i>
    voici un nouveau texte
    </i>
    


    Je ne comprends pas mon erreur. Merci de votre aide.
    • Partager sur Facebook
    • Partager sur Twitter
      6 octobre 2009 à 8:53:16

      Si tu cliques sur le triangle jaune en bas, il s'affiche quoi ?
      (en gros, c'est la console d'erreur, ça t'aidera à trouver le problème, normalement...)
      • Partager sur Facebook
      • Partager sur Twitter
        6 octobre 2009 à 11:16:17

        xmlhttp1.open("GET", MyUrl + '?' + Math.random(), true);
        


        :-°

        Ps: C'est moi ou la colo syntaxique a changer?
        • Partager sur Facebook
        • Partager sur Twitter
          6 octobre 2009 à 11:21:52

          Nouvelle police, j'ai l'impression... maintenant que tu le dis ^^
          et ça sert à quoi de rajouter ? Math.random() ??
          planquer la requête pour qu'elle soit plus difficile à comprendre ? :-°
          • Partager sur Facebook
          • Partager sur Twitter
            6 octobre 2009 à 11:23:18

            IE et le cache, une histoire d'amour :-°

            Si sa page fut vide un jour, et qu'il la chargé avec IE, le cache de IE sévit :-°
            • Partager sur Facebook
            • Partager sur Twitter
              6 octobre 2009 à 11:27:20

              Rien compris... tu peux pas être clair une fois :D ?
              • Partager sur Facebook
              • Partager sur Twitter
                6 octobre 2009 à 11:29:49

                IE met la page dans le cache.

                Mais ce gros trisomique, ne vérifie pas si la page mise en cache est la même que l'actuelle (pour l'ajax en tout cas)

                Donc ce gros mongol, prend la page du cache, sans demander au serveur.

                Et si la page en cache n'est pas la bonne, bah.. Owned.
                Si tu mets du random, le nom de la page change toujours, et donc no cache :o
                • Partager sur Facebook
                • Partager sur Twitter
                  6 octobre 2009 à 11:32:16

                  Argh... l'est vraiment débile >_<
                  C'est bon à savoir ça :-°
                  • Partager sur Facebook
                  • Partager sur Twitter
                    6 octobre 2009 à 13:50:48

                    Ok merci, je vais tester ce soir avec cette ligne de code et vous tiens informés
                    • Partager sur Facebook
                    • Partager sur Twitter
                      7 octobre 2009 à 21:49:19

                      Désolé mais le script ne fonctionne toujours pas sous ie même avec la fonction Random.
                      aucun changement : rien sur IE alors que tout fonctionne sur FF.
                      Je n'y comprend rien. Ceci m'a lair d'être une fonctionalité de base et pourtant...

                      En cliquant sur le triangle jaune en bas à gauche, le message indique le pb à la ligne correspondant au bouton, premier caractère. Il indique "erreur : objet attendu"


                      Une autre idée ?
                      • Partager sur Facebook
                      • Partager sur Twitter

                      httprequest ne fonctionne pas 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