Html / Ajax - Retour d'une requete ds TABLEAU

Résolu/Fermé
shakazoulou77 - 19 janv. 2009 à 12:52
 shakazoulou77 - 19 janv. 2009 à 14:48
Bonjour,

J'aimerais mettre à jour un tableau de façon dynamique via une requête AJAX.

La requête fonctionne bien cependant je n'obtiens pas l'affichage désiré :

Une ou plusieurs lignes doivent s'ajouter au tableau HTML en fonction de la requete et dans mon cas cela affiche le contenu de la requete SQL via ajax simplement en affichant les informations à la ligne, dans aucunes cases.

Voici un extrait de mon code html:
<table>
<tr>
<th>nom</th>
<th>prenom</th>
</tr>
<tr>
<div id='zone'></div>
</tr>
</table>

et un extrait du contenu de ma fonction ajax:
requete.onreadystatechange = function()
{
if(requete.readyState == 4) {
if(requete.status == 200) {
document.getElementById('zone').innerHTML = requete.responseText;
}
}
};


un extrait du script de recherche et de son affichage appelé via ajax:
echo "<td>".$val['nom']."</td>";
echo "<td>".$val['prenom']."</td>";

La requete SQL fonctionne et la zone "zone" de mon tableau recoit bien le résultat cependant elle n'affiche pas les informations dans les cellules du tableau ligne par ligne comme désiré. C'est comme si j'étais hors du tableau sans aucune mise en forme.

Quelqu'un a une idée ?
D'avance, merci
A voir également:

4 réponses

bizu53 Messages postés 1274 Date d'inscription samedi 30 août 2008 Statut Membre Dernière intervention 21 juin 2015 859
19 janv. 2009 à 13:08
Je me trompe peut-être mais je pense que c'est ton imbrication : table > tr > div > td
Je pense que la div casse la structure de ta table.

Essaye ça :
<table>
<tr>
<th>nom</th>
<th>prenom</th>
</tr>
<tr id='zone'>
</tr>
</table>

Ça devrait marcher, j'ai déjà fait qqch de similaire.
1
shakazoulou77
19 janv. 2009 à 13:45
en effet j'avais essayé cette méthode, le résultat s'affiche bien dans le tableau mais le déforme complètement puisqu'il n'effectue aucun retour à la ligne (tout dans la même ligne).
0
Marco la baraque Messages postés 996 Date d'inscription vendredi 9 mai 2008 Statut Contributeur Dernière intervention 5 novembre 2009 328
19 janv. 2009 à 14:12
Bonjour,
Il faut effectivement garder la structure classique du tableau html (table > tr > th ou td).
Par défaut le td ne revient pas à la ligne (d'où la déformation), il faut lui spécifier un style css :
<td style="white-space: normal;"> Blabla </td>

Cordialement,
0
shakazoulou77
19 janv. 2009 à 14:20
Merci pour vos réponses,

j'ai essayé le white-space dans mes balises <td> mais ca ne change rien.

Autre problème : le texte retourné par la requete comporte un problème d'accents (surement un souci d'encodage). On dirait que c'est provoqué par l'utilisation d'une requete asynchrone justement car autrement (par une requete SQL classique) tout s'affiche correctement.
0
Marco la baraque Messages postés 996 Date d'inscription vendredi 9 mai 2008 Statut Contributeur Dernière intervention 5 novembre 2009 328
19 janv. 2009 à 14:45
Pour l'autre problème, il faut que tu spécifies l'encodage dans le header de la response.
Par exemple ici j'envoie un fichier xml, encodage europe occidental normal, via php :
header('Content-type: text/xml; charset=iso-8859-1');

Par contre, c'est bizarre que ça t'affiche ça correctement en mode synchrone.

Pour le white-space, vérifie aussi que tu as bien fixé la longueur de tes colonnes (width), sinon elles vont s'étendre à l'infini avant de couper le texte.

Cordialement,
0
shakazoulou77
19 janv. 2009 à 14:48
Ca fonctionne !
Merci beaucoup pour ton aide,

bonne journée :)
0