- 1
[Opened] Fragment HTML
Posted by dlalleme on 11/12/2008 17:47
Bonsoir,
Je galère pour insérer un fragment html dans ma page...
J'ai un DIV dans mon template puis avec la technique AJAX, je crée ma liste HTML sous forme de tableau que j'insère dans ma balise DIV.
Ça marche pas bien !!!! Quelqu'un peut-il m'aider ? Je dois oublier quelque chose dans la procédure.
Note : Je récupère mon fragment et je l'insère dans ma DIV avec la méthode
document.getElementById('zonelistepromos').innerHTML = httpp.responseText;
J'utilise bien la response htmlfragment
Cordialement
Denis
[Opened] Re: Fragment HTML
Posted by laurentj on 11/12/2008 18:07
Bon, t'es pas le premier, et ça commence à m'agacer : comment voulez-vous qu'on vous aide si vous nous mettez pas ce que vous avez fait exactement ? indiquez nous un bout de votre code, qu'on comprenne ce qui se passe. Dire 'ça marche pas', c'est totalement inutile.
là par exemple, met nous la méthode qui renvoi le fragment, le code js qui le récupère etc.
tu as fait au moins un alert de responseText pour voir si tu recevais quelque chose ?
[Opened] Re: Fragment HTML
Posted by Julien on 11/12/2008 22:36
Hello,
il ne s'agirait pas bêtement d'un problème HTML ?
je suis pas certain que ton div comme ça au milieu d'un <td> soit bien interprété ?
car là ca va te générer un truc du genre
<td> <div id="zonelistepromos"> Mode & accessoires</td> <td>Chaussures femmes</td> <td>Ballerine</td> <td>---------------</td> <td></td> <td><button name="Valider" value="valider" type="button" onClick="SupprimerCats(7, 1597, 1671, 1674, 4)">Valider</button></td> </tr><tr> ... </div> </td>
bref, pas propre du tout du tout, et à mon avis l'affichage qui "ne correspond pas complètement à la réponse" vient de là
Julien
[Opened] Re: Fragment HTML
Posted by Julien on 11/13/2008 02:52
Hello,
je renverrai plutôt du JSON ou XML, puis je constrirait les elts HTML via le DOM en JS.
ou alors jpour insérer ton HTML, j'utiliserai jQuery qui est inclus dans jelix, et notamment :
http://docs.jquery.com/Manipulation/after#content
donc qqchose du genre :
<!-- Fin pour ajout --> <tr id="toto"> <td colspan="6"> <hr> </td> </tr>
et
$('#toto').after(httpp.responseText)
et ta réponse débuterai ainsi :
<tr class="ajaxAdded"> <td> ..... </td> </tr>
l'idée serait d'avoir une class spéciale sur chaque <tr>, pour pouvoir les supprimer avant un reload Ajax :
$('tr.ajaxAdded').remove();
PS : tout ceci je n'ai pas testé, et vu l'heure, y a peut-être des erreurs, mais l'idée est là.
Julien
[Opened] Re: Fragment HTML
Posted by dlalleme on 11/13/2008 14:15
Bonjour,
Bon j'ai bien pris en compte ton idée d'utiliser jquery, mais comme je ne l'ai jamais utilisé, je n'ai pour l'instant pas trop le temps pour l'apprentissage.
Mais à quoi sert la réponse htmlfragment si elle ne peut pas être utilisée comme je l'ai fait (en évitant la balise DIV bien sûr) ?
Merci
Cordialement
Denis
[Opened] Re: Fragment HTML
Posted by laurentj on 11/13/2008 17:17
Désolé de m'être faché, mais à force d'avoir des questions très vagues...
Revenons au problème. Oui, tu peux utiliser htmlfragment comme tu l'as fait. C'est fait pour. Mais c'est le code HTML que tu génère qui n'est valide d'un point de vue HTML. Et sache qu'il n'y a pas que innerHtml au niveau DOM.
Comme apparemment c'est une ligne de tableau que tu insères, en javascript tu devrais faire:
var tr = document.createElement("tr"); tr.innerHtml = http.responseText document.getElementById('id_de_ta_table').appendChild(tr);
Et enlève ce truc
<tr> <td> <div id="zonelistepromos"> </div> </td> </tr>
Et dans le code que tu génères dans le fragment html, ouvre et ferme correctement les td.
- 1