Bonjour, alors voila je developpe une application web ayant des pages personnalisable, la page a plusieur zone et dans chaque zone, l'utilisateur définit quelle élement va etre chargé.
En quelque mots lors du démarrage un succession de requete ajax, va construire la page dynamiquement.
Mon code fonctionne sous IE et pose probleme pour FireFox. J'aimerais pouvoir le rendre compatible.
Voila le code de reception de reponse d'une requete ajax:
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
 
function changeFiche()
{
if (req.readyState == 4 && req.status == 200)
{
//définit l'endroit ou l'on doit inséréer la miniFiche
//variable passé en parametre (emplacement) lors de la requete ajax
var emplacement = req.responseXML.getElementsByTagName('emplacement')[0].text ;
 
//ligne pr le debuggage, cf. en bas
document.getElementById("debugger").value=req.responseText;
 
//déninit l'identifiant de la miniFiche qui va etre insérée
//Constante défnit dans le fichier correspondant a la miniFiche,
//founit dans la balise monId
var nouvelleID = req.responseXML.getElementsByTagName('monId')[0].text ;
 
//Contenu de la miniFiche, dans une balise <![CDATA[...]]>
var donnees = req.responseXML.getElementsByTagName('response')[0].text ;
 
//on recupere la cible, ou l'on doit inséré la miniFiche
var leDiv = document.getElementById(emplacement);
 
//on modifie sont attribut, elle ne correspond plus a 
//l'identifiant d'un emplacement mais d'une miniFiche
leDiv.setAttribute("id",nouvelleID);
 
//on prepare l'identifiant qui sera la cible du prochain ajout d'élement
//la miniFiche suivante sera ajouté en dessous
var emplacementPourEmpilement="<div id=\""+emplacement+"\"></div>";
 
//on place la miniFiche a l'endroit prévu
//on fournit également le prochain emplacement vide
leDiv.innerHTML = donnees+emplacementPourEmpilement;
 
//si il reste encore des miniFiche a chargé on relance la fct.
indiceChargement=indiceChargement+1; 
 
if(indiceChargement < lesChargements.length)
initFiche();
}//end if(req.readyState == 4 && req.status == 200)
}//end fct changeFiche
sinon la réponse renvoyé et au format xml est la suivante
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
 
<?xml version="1.0" encoding="UTF-8"?>
<jsp:directive.page contentType="text/xml; charset=iso-8859-1" />
<%
response.setHeader("Cache-Control", "no-cache");
String divCible= request.getParameter("emplacement");
String monId="ficheAbonnement";
%>
<xmlresponse>
	<emplacement><%=divCible%></emplacement>
	<monId><%=monId%></monId>
	<response>
	<![CDATA[
			<table align="center" border="1" width="100%" bgcolor="white">
				<tr>
					<td>
						<b>Abonnement</b><br/>
						Abonné depuis le 30/34/2001<br/>
						Arrete le --/--/----<br/>
						<i>Mr Joseph MILLION</i><br/>
						<i>39 rue d Angleterre</i><br/>
						<i>73000 Chambery</i>
					</td>
				</tr>
			</table>
	]]>
	</response>
</xmlresponse>
Donc voila pr résumé ce code marche avec Internet Explorer mais pas avec FireFox rien ne se passe et j'obtient le message d'erreur dans la console :
"leDiv has no properties".
(erreur sur la ligne correspondante a leDiv.setAttribute("id",nouvelleID)

Sinon pour debugger un peu j'ai rajouter la ligne
document.getElementById("debugger").value=req.responseText;
InternetExploreraffiche dans le debugger (champs text de ma page html)
la totalité de la réponse
et FireFox uniquement la premier balise c"'est a dire :
<?xml version="1.0" encoding="UTF-8"?>

Donc voila si quelqu'un c'est pourquoi le code ne marche pas avec FF, ou meme des remarques sur mon code, vous m'aideriez beaucoup
Merci d'avance