IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

[AJAX] Compatiblité IE<->FF...


Sujet :

JavaScript

  1. #1
    Membre confirmé
    Inscrit en
    Août 2004
    Messages
    171
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 171
    Par défaut [AJAX] Compatiblité IE<->FF...
    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

  2. #2
    Expert confirmé

    Avatar de denisC
    Profil pro
    Développeur Java
    Inscrit en
    Février 2005
    Messages
    4 050
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 4 050
    Par défaut Re: [Ajax] Compatiblité IE<->FF...
    Citation Envoyé par metalpetsFR
    var emplacement = req.responseXML.getElementsByTagName('emplacement')[0].text ;
    J'ai beaucoup de doutes sur le .text dans Firefox. Tu es sur que c'est bien DOM, ça? firstChild.data, non?

    Citation Envoyé par metalpetsFR
    <?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";
    %>
    J'inverserai. D'abord les directives JSP avec le header HTTP, ensuite le début du document.

    Citation Envoyé par metalpetsFR
    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)
    Tu as essayé un alert(leDiv) pour voir ce qu'il en est? Tu as bien un div avec le bon id? Tu as vérifié la valeur de emplacement dans ce bloc de code?

  3. #3
    Membre confirmé
    Inscrit en
    Août 2004
    Messages
    171
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 171
    Par défaut
    Merci, t'es un chef !

    j'ai effectivement remplacer le .text par .firstChild.data qui marche vraiment mieux

    un résolu de plus

  4. #4
    Expert confirmé

    Avatar de denisC
    Profil pro
    Développeur Java
    Inscrit en
    Février 2005
    Messages
    4 050
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 4 050
    Par défaut
    Citation Envoyé par metalpetsFR
    un résolu de plus
    Avec un peu de chance, ça va augmenter ma prime de rendement, ça, hien Spacy?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AJAX] Effectuer plusieur appel ajax
    Par shwin dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 06/10/2005, 16h40
  2. [AJAX] Ajax et javascript contenu
    Par zekey dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 30/09/2005, 20h16
  3. [AJAX] AJAX et javascript
    Par spud5351 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 20/09/2005, 10h16
  4. Probleme de compatiblité avec IE
    Par Fooshi dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 07/02/2005, 10h05

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo