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


Sujet :

JavaScript

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 45
    Points : 24
    Points
    24
    Par défaut [AJAX] Table.innerHTML et IE..
    Bonjour à tous,

    Je suis novice dans le forum et j'espère que vos lumières m'aideront à y voir plus clair dans le monde impitoyable de l'Ajax.

    Mon problème est le suivant. Je suis amené à développer une interface d'administration destinée à mettre à jour des données.
    J'ai une page html avec un tableau (je vous épargne les détails) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <table id="table_grades" cellpadding="0" cellspacing="0" border="1">
            <thead>
                    <tr>
                    <th>Nom</th>
                    <th>Prenom</th>
                    <th>Date d'obtention</th>
                    <th>Grade</th>
                    </tr>
            </thead>
            <tbody id="tb" name="tb"><!-- ici on insère nos données issues de PHP (les <tr> de chaque personnes)-->
            </tbody>
    </table>
    Le but est d'effectuer une recherche selon les critères choisis par l'utilisateur (nom, prenom...) et d'afficher les résultats en temps réel.

    J'ai opté pour une solution en AJAX qui fonctionne merveilleusement bien ... sous Firefox. Le navigateur le plus pourri que je connaisse, IE, refuse de m'afficher les lignes. Après un débuggage, il semble que le souci provienne d'un innerHTML de mon tbody au moment de la mise à jour...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if(xhr.responseText!="") {
    lbletat.innerHTML = ""
    lblres.innerHTML = ""
    //alert(xhr.responseText)
    document.getElementById("tb").innerHTML = xhr.responseText <<<< ici
    Firefox ne bronche pas à cette syntaxe... auriez-vous une solution à ce problème ?

    Merci d'avance et bonne soirée à vous.

  2. #2
    Membre actif Avatar de Ikonic
    Inscrit en
    Février 2007
    Messages
    197
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 197
    Points : 202
    Points
    202
    Par défaut
    Salut,

    N'aurais-tu pas oublier les balises <tr></tr> et <td></td> ?

    Voir DOM createElement et appendChild.

    Peux-tu nous donner un exemple type de ta réponse xhr.responseText, pour pouvoir te proposer la correction ?
    piksite.com
    Pour vos photos, images, .... » Carousel.us

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 45
    Points : 24
    Points
    24
    Par défaut
    Salut et merci de ta réponse,

    Alors les balises sont belles et bien fermées, je t'ai mis un imprime écran d'un alert de mon xhr.response.text.

    Merci à toi
    Images attachées Images attachées  

  4. #4
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    Bonjour,
    as-tu essayé de regénérer tout le tableau (de <table> à </table>) à la réponse d'Ajax ?
    Avec IE6, ça ne pose pas de problème (bien que la syntaxe DOM soit toujours préférable).

    A+
    Pour tout savoir sur l'utilisation du forum

    En postant votre message, n'oubliez pas les Règles du Club.

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 45
    Points : 24
    Points
    24
    Par défaut
    Bonjour,

    Ta méthode a marché, merci énormément.

    Je vais tout de même tenter de réecrire le code plus proprement, mais je ne vois pas comment procéder pour la mise à jour de plusieurs centaines de lignes via le DOM.
    Peut être avez-vous une idée ?

    Merci en tout cas, cela fonctionne très bien déjà !

  6. #6
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    Citation Envoyé par jyuzakumo Voir le message
    Je vais tout de même tenter de réecrire le code plus proprement, mais je ne vois pas comment procéder pour la mise à jour de plusieurs centaines de lignes via le DOM.
    Normalement il suffit d'imbriquer correctement les boucles de créations des <tr> et <td>.
    Le nombre de lignes du tableau final ne devrait pas augmenter la complexité du code ...

    A+
    Pour tout savoir sur l'utilisation du forum

    En postant votre message, n'oubliez pas les Règles du Club.

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 45
    Points : 24
    Points
    24
    Par défaut
    Citation Envoyé par E.Bzz Voir le message
    Normalement il suffit d'imbriquer correctement les boucles de créations des <tr> et <td>.
    Le nombre de lignes du tableau final ne devrait pas augmenter la complexité du code ...

    A+
    Je vais me pencher sur cette méthode qui m'a l'air forte intéressante.

    Merci de vos conseils messieurs.

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 45
    Points : 24
    Points
    24
    Par défaut
    J'en profite pour éclaircir un autre point, la boucle doit se faire dans le code PHP je suppose ? Ce qui signifie que je dois avoir du code JS dans le fichier PHP qui me renvoie les lignes.
    Comment intégrer ces résultats sans passer par le innerHTML ?

  9. #9
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    Citation Envoyé par jyuzakumo Voir le message
    J'en profite pour éclaircir un autre point, la boucle doit se faire dans le code PHP je suppose ? Ce qui signifie que je dois avoir du code JS dans le fichier PHP qui me renvoie les lignes.
    Non, plutôt :
    PHP devrait renvoyer les uniquement les données du tableau sous forme "structurée" (XML, texte avec séparateur ou autre).
    A réception, JS lit ces données et les intègre à la page via les boucles faisant appel aux instructions DOM.

    A+
    Pour tout savoir sur l'utilisation du forum

    En postant votre message, n'oubliez pas les Règles du Club.

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 45
    Points : 24
    Points
    24
    Par défaut
    Citation Envoyé par E.Bzz Voir le message
    Non, plutôt :
    PHP devrait renvoyer les uniquement les données du tableau sous forme "structurée" (XML, texte avec séparateur ou autre).
    A réception, JS lit ces données et les intègre à la page via les boucles faisant appel aux instructions DOM.

    A+
    Aurais-tu un exemple de ce genre de boucle sous la main ? Je dois dire que mon niveau est très basique et j'ai du mal à voir la procédure.
    Dans ce cas tu préconiserais une solution response.Text ou XML ?

  11. #11
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    Citation Envoyé par jyuzakumo Voir le message
    Dans ce cas tu préconiserais une solution response.Text ou XML ?
    Plutôt XML ...
    Je n'ai pas d'exemple sous la main
    Regarde peut-être du côté des librairies et autres frameworks. Ces fonctionnalités sont certainement prises en compte (mais j'utilise pas).

    A+
    Pour tout savoir sur l'utilisation du forum

    En postant votre message, n'oubliez pas les Règles du Club.

  12. #12
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 45
    Points : 24
    Points
    24
    Par défaut
    Citation Envoyé par jyuzakumo Voir le message
    Aurais-tu un exemple de ce genre de boucle sous la main ? Je dois dire que mon niveau est très basique et j'ai du mal à voir la procédure.
    Dans ce cas tu préconiserais une solution response.Text ou XML ?
    Très bien je vais effectuer quelques recherches.

    Grand merci à toi.

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

Discussions similaires

  1. Ajax/js InnerHTML affichage image
    Par tib0 dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 28/02/2010, 23h12
  2. [Prototype] [AJAX] Exécuter une fonction javascript via une requête AJAX et innerHTML
    Par Invité dans le forum Bibliothèques & Frameworks
    Réponses: 2
    Dernier message: 01/05/2009, 04h36
  3. [AJAX] Tables différence entre IE et Firefox
    Par yuukuari dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 28/06/2007, 11h10
  4. [AJAX] innerHTML assez déroutant
    Par dragonfly dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 31/01/2007, 13h09
  5. [AJAX] Ajax et innerhtml
    Par reg11 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 05/09/2006, 10h33

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