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] innerHTML et IE


Sujet :

JavaScript

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2006
    Messages : 27
    Points : 21
    Points
    21
    Par défaut [AJAX] innerHTML et IE
    Bonjour,

    j'aimerais obtenir dans un div le contenu d'une popup. Si ajax est compatible avec le navigateur, le code suivant est exécuté (httpObj est un objet de type XMLHttpRequest ou ActiveXObject pour IE):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    httpObj.open("GET",urlPopup,true);
    httpObj.onreadystatechange = function()
    {
      if(httpObj.readyState == 4) 
      {                                               document.getElementById('divPopupAjax').innerHTML=httpObj.responseText;
       document.getElementById('divPopup').style.display='block';
      }
    }
    httpObj.send(null);
    Ce code fonctionne sous firefox, mais déclenche une erreur javascript bizarre sous internet explorer. (Erreur d'exécution inconnue...) à la ligne du innerHTML. J'ai lu que IE empêchait d'aller réécrire le contenu d'un élément avec innerHTML, mais peut-être seulement dans certains cas.

    Est-ce que qqn pourrait m'aider ?

    Autre chose, l'objet xmlHttpRequest retourne le résultat de la requête (avec responseText) en utf-8. Ce qui fait que mes caractères avec accents ne sont pas affichés correctement...Il faudrait spécifier à cet objet de me les retourner en ISO. Qqn sait faire cela ?

    Merci d'avance de vos réponses

  2. #2
    Membre régulier
    Inscrit en
    Août 2004
    Messages
    171
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 171
    Points : 97
    Points
    97
    Par défaut
    Je pense que le problème viens du fait que IE ne peut remplacer le contenu d'une élément HTML par innerHTML seulement si cet élément est un DIV.

    Je pense qu'il te suffit de englober ton élément dans un div est le probleme est réglé.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 31
    Points : 29
    Points
    29
    Par défaut
    IE, en théorie, supporte innerHTML pour tous les éléments classiques (dixit la MSDN). Donc je ne sais pas trop ce qui cloche...

    Par contre, pour l'encodage en UTF8 ou ISO, c'est au niveau du serveur que ca se passe : lors de l'envoi de la réponse Ajax, ton script coté serveur doit spécifier l'encodage, en utilisant le header http "content-type".

  4. #4
    Membre régulier
    Inscrit en
    Avril 2004
    Messages
    88
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 88
    Points : 104
    Points
    104
    Par défaut
    il faut en effet que tu spécifie l'encoding de ta réponse.

    En ce qui concerne l'affichage dans ton div, tu as essayés d'afficher la réponse dans une alert ? ca va te permettre deja de voir si c'est correct.

    De plus j'ai entendu dire que IE (6 il me semble ou une autre version) ne gere pas bien ajax et génère une erreur, tu utilises quelle version de IE ?

    C'est normal que tes div n'aient pas le meme nom ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementById('divPopupAjax').innerHTML
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementById('divPopup').style.display

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2006
    Messages : 27
    Points : 21
    Points
    21
    Par défaut
    Justement divPopupAjax est un div, donc théoriquement ca devrait jouer...bizarre. Mais c'est possible que c'est parce qu'il y a "trop" de code ?

    Sinon oui c'est normalement que les divs n'aient pas le même nom. Enfait le divPopup est inclu dans le divPopupAjax grâce à innerHTML justement. Et comme il est d'abord invisible, je le remets en visible.

    Concernant l'encodage, j'ai lu que l'objet ajax xmlHttpRequest retourne de toute façon du texte encodé en UTF-8. J'ai trouvé une fonction setRequestHeader pour lui spécifier l'encodage ISO-8859-1, mais ca change rien

Discussions similaires

  1. [AJAX] cherche équivalent DOM-AJAX à .innerHTML
    Par spidflinch dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 09/01/2009, 17h36
  2. [AJAX] innerHTML, setInnerHTML
    Par Invité dans le forum Général JavaScript
    Réponses: 29
    Dernier message: 26/06/2008, 11h11
  3. [AJAX] Ajax, innerHTML et fonction javascript - solution ?
    Par gouroulubrik dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 25/03/2008, 21h35
  4. [AJAX] Ajax, innerHTML et variable javascript
    Par philippejuju dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 11/01/2007, 11h30
  5. AJAX + Innerhtml + img => Bug sous IE
    Par GregPeck dans le forum Langage
    Réponses: 12
    Dernier message: 07/02/2006, 17h43

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