Bonjour.

J'ai un petit site internet avec les pages comme suit :
- une div de titre qui contient le titre du site et le menu (id 'menu').
- en dessous les pages qui changent en fonction des clics sur le menu (id 'body').

J'utilise de l'ajax pour me faire la main.

Sous Firefox tout fonctionne bien.
Sous IE rien ne fonctionne (pas d'affichage des pages demandées), mais une erreur : "[...] a la valeur Null ou n'est pas un objet".

J'ai essayé de trouver des réponses simples et claires sur internet, mais rien de passionnant...

Ma page index.php (simplifiée):

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
<html>
    <head>
        <!-- balises de forme -->
        <title>qFreeFax - Le fax gratuit et flexible pour les abonnés de Free</title>
        <link rel="stylesheet" type="text/css" href="index.css">
 
        <!-- fonctions javascript générales -->
        <script src="fonctions.js" type="text/javascript" LANGUAGE="JavaScript"></script>
    </head>
 
    <body onload="appelAjax('accueil')">
        <div id="menu">
            <a onclick="appelAjax('accueil')">accueil</a>
        </div>
        <div id="body">
        </div>
    </body>
 
</html>
Ma page de fonctions javascript (simplifiée) :

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
      var objRequete = new XMLHttpRequest();	// instanciation d'un objet XMLHttpRequest
 
		function appelAjax(newPage) 
       {
			// fonction appelée. param non utilisée ici
			//var ma_variable=document.getElementById("...").value;
 
          objRequete.open('get','traitNav.php?request='+newPage,true);	//ouverture d'une requete XMLHttpRequest avec paramètres methode get, mode asynchrone (true)
			objRequete.onreadystatechange = reponseAjax;		// nom de la fonction qui traite la reponse de l'accès précédent
			objRequete.send(null);									// envoie de la requete
 
            return true; // la fonction retourne vrai (sans incidence ici - syntaxiquement correct)
        }
 
 
        function reponseAjax() 
        {
		    if (objRequete.readyState==4) // 4: transaction terminée avec données chargées
           { 
				document.getElementById("body").innerHTML = objRequete.responseText; // modif du DOM
            }
        }
La page de traitement de la navigation (avec vérification de l'existence des fichiers etc...) n'est pas interessante dans ce cas.

Merci de vos réponses, il faut que ce site soit compatible FF et IE.
C'est cette méthode que je veux utiliser, pas une autre, car je ne peux pas rafraichir tout à chaque changement de page.

Guillaume