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 :

httpRequest qui bugue sous IE (innerHTML dans balise table)


Sujet :

JavaScript

  1. #1
    Membre éprouvé Avatar de renaud26
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    1 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 1 365
    Par défaut httpRequest qui bugue sous IE (innerHTML dans balise table)
    Bonjour à tous,

    J'ai crée un httpRequest pour afficher un bloc HTML qui contient des variables PHP. Ce bloc HTML est un morceau de tableau dans le genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <?php
    for($i = 0; $i<count($data);$i++){
    echo "<tr><td>".$data[$i]."</td></tr>";
    }
    ?>
    Dans la page où il doit s'afficher, j'ai crée :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <table>
    <tr><td>titre</td></tr>
    <tbody id="donnees"></tbody>
    </table>
    Le fichier JS contient l'instruction suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    xhr.onreadystatechange = function() { 
    if(xhr.readyState == 4) {
    document.getElementById('donnees').innerHTML =   xhr.responseText;
     }
    return xhr.readyState;
    }
    Sur Firefox, pas de souci, c'est nickel.
    Sur IE : "Erreur d'exécution inconnue" et rien ne s'affiche.
    Par contre, si au lieu de <tbody id="donnees"></tbody>, je mets <div id="donnees"></div> il n'y a plus d'erreur et le bloc s'affiche....n'importe où dans la page et pas à l'endroit souhaité.

    Quelqu'un a t-il une soluce pour contourner ce problème ?
    D'avance, je l'en remercie.

  2. #2
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Par défaut
    Bonjour,
    <table>
    <tr><td>titre</td></tr>
    <tbody id="donnees"></tbody>
    </table>
    Essaies d'utiliser un thead et th pour l'en-tête.
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <table>
    <thead><th>titre</th></tr></thead>
    <tbody id="donnees"></tbody>
    </table>

  3. #3
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 658
    Billets dans le blog
    1
    Par défaut
    ce n'est pas l'ajax qui pose problème, mais l'inserton sur le retour du code html dans la page ...
    Montre nous plutot cette partie là ...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  4. #4
    Membre éprouvé Avatar de renaud26
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    1 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 1 365
    Par défaut
    Bonjour et merci pour ta réponse,

    Malheureusement, un <thead> ne change rien.
    En réalité, je n'ai mis ce bout de code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <table>
    <tr><td>titre</td></tr>
    <tbody id="donnees"></tbody>
    </table>
    que pour l'exemple et pour simplifier un max tout en montrant que ça se passe dans un tableau HTML.

    En réalité, cette table contient beaucoup d'autres données, genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    <table>
    <tr>
    <td>Titre</td>
    </tr>
    <tbody>
    <tr>
    <td>Des données</td>
    </tr>
    </tbody>
    etc....
    <tbody id="donnees"></tbody> ----->ici affichage souhaité httpRequest
    etc...encore des données
    </table>
    Je ne parviens pas à comprendre pourquoi le httpRequest s'affiche dans un <div> et pas dans un <tbody>. J'ai fait un document.write des données httpRequest et vérifié le code HTML qui doit s'afficher dans le <tbody> : il est correct.

  5. #5
    Membre éprouvé Avatar de renaud26
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    1 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 1 365
    Par défaut
    Bonjour SpaceFrog, nos posts se sont croisés.

    Voici le code qui doit s'afficher dans le <tbody> :

    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
     
    <tr>
    <td class="mainTdO"  style="background-color:#99FF00;color:#000000">
    <b>Choisissez le produit N° 1
    <br><br>
    Code promo du produit N° 1 : </b>
    </td>
    <td class="mainTdO" style="background-color:#99FF00;color:#000000">
    <select name="prod[0]" id="selectProd" onchange=""  >
    <option value=""><---Sélectionnez un produit---></option>
    <option value="1">N° 1 - produit 1</option>
    <option value="6">N° 6 - produit 2</option>
    <option value="8">N° 8 - produit 3</option>
    </select>
    <br><br>
    <select name="the_code_promo[]"  >
    <option value="0">Aucun code promo</option>
    </select> 
    </td></tr>
    Je ne vois rien de particulier là-dedans, d'autant que FF l'affiche très bien et où il faut. Le code qui est au dessus et au dessous du <tbody> me semble sain, mais je vais quand même faire des vérifs de ce côté là...

  6. #6
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 658
    Billets dans le blog
    1
    Par défaut
    je ne vois pas le code js qui fait l'insertion ...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  7. #7
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 658
    Billets dans le blog
    1
    Par défaut
    désolé au temp s pour moi ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementById('donnees').innerHTML =   xhr.responseText;
    il semblerait que IE ait un peu de mal avec l'insertion de code html dans les tableaux ...
    d'une part il faut insérer dans le tbody (ou le thead)
    essaye
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    document.getElementById('donnees').parentNode.tbody.innerHTML =   xhr.responseText;
    Mais je doute que tu aies de meilleurs resultats
    pour moi il sera plus sur de recupérer les infos necessaires à la creation d'objets coté js soit avec createElement soit insertCell et rows ...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  8. #8
    Membre éprouvé Avatar de renaud26
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    1 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 1 365
    Par défaut
    Alors, pour tenter de cerner le problème, j'ai isolé le code de la page qui insère le JS et l'ai réduit à sa simple expression :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <SCRIPT LANGUAGE="Javascript" SRC="js/fonctions_xhr.js"></script>
    </head>
    <body onload="charge_produits('1','std','mono-produit','test','0','0','ship','3');">
    <form id="params" name="params">
    <table>
    <tbody id="donnees"></tbody>
    </form>
    </table>
    Nickel sur FF - Warning avec IE.

  9. #9
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 658
    Billets dans le blog
    1
    Par défaut
    il semblerait que IE ait un peu de mal avec l'insertion de code html dans les tableaux ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <SCRIPT LANGUAGE="Javascript" SRC="js/fonctions_xhr.js"></script>
    </head>
    <body onload="charge_produits('1','std','mono-produit','test','0','0','ship','3');">
    <form id="params" name="params">
     
    <pre id="donnees"></pre>
    </form>
    </table>
    Je parie que ça fonctionne sous IE ...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  10. #10
    Membre éprouvé Avatar de renaud26
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    1 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 1 365
    Par défaut
    Merci pour tes conseils.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    document.getElementById('donnees').parentNode.tbody.innerHTML = xhr.responseText;
    Ne fonctionne ni avec IE ni avec FF (parentNode.tbody is undefined)

    Par contre <pre id="donnees"></pre> fonctionne sous IE, de même que <div> ou <span>... mais bonjour l'affichage ! Bien évidemment ça sort complètement du tableau d'affichage.

    C'est ce satané <tbody> qui pose problème.

    Mais une précision tout de même : bien que FF affiche le test correctement, j'ai quand même un gros warning dans la console erreur :

    Erreur*: balise ne correspondant pas. Attendu*: </br>.
    Ligne*: 1, Colonne*: 141
    Code Source*:
    <tr><td class="mainTdO" style="background-color:#99FF00;color:#000000"><b>Choisissez le produit N° 1<br><br>Code promo du produit N° 1 : </b></td>
    C'est ouf : il me demande un </br> avant le dernier </b> !!!

  11. #11
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 658
    Billets dans le blog
    1
    Par défaut
    non c'est juste 'insertion de code html dans une balise table qui pose souci là ...


    http://www.developpez.net/forums/d91...ement-sous-ie/
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

Discussions similaires

  1. Réponses: 4
    Dernier message: 20/03/2015, 13h36
  2. [Débutant] page aspx qui passe un Txt file dans une table de BDD
    Par harghan dans le forum C#
    Réponses: 9
    Dernier message: 11/06/2014, 12h00
  3. Macro qui va chercher des conditions dans une table
    Par piflechien73 dans le forum VBA Access
    Réponses: 5
    Dernier message: 13/09/2009, 22h29
  4. Réponses: 2
    Dernier message: 20/02/2008, 12h24
  5. [VBA] fonction qui donne la valeur présente dans une table
    Par zanou666 dans le forum VBA Access
    Réponses: 7
    Dernier message: 25/09/2007, 17h33

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