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:
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
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
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 :
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>
"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
Partager