11548 sujets

JavaScript, DOM et API Web HTML5

Bonjour,

Me voici confronté à un problème fort ambarassant:
Un script javascript appel en ajax un controller php qui doit lui retourner du contenu xhtml à afficher tel quel et des données qui seront traitées par javascript (non affichées), en gros quelque chose comme ca:

<root>
     <view><![CDATA[<div>Mon contenu potentiellement dangereux avec des caractères spéciaux ( >, <, &...)</div>]]></view>
     <data><nom>DUPONT</nom><prenom>Alex</prenom></data>
</root>


Seulement, avec cette syntaxe, impossible d'interprêter le code xhtml contenu dans la section <![CDATA[]]> (j'utilise jquery). La solution que certains me proposeront sûrement est de supprimer cette section (après tout le xhtml, c'est de l'xml) mais ça pose le problème des caractères spéciaux qui planteront le parsing.

Je suis actuellement sur l'optique de faire 2 requêtes pour ne plus avoir ce problème mais j'aimerai vraiment éviter (question optimisation):
- une pour le code html
- une pour le données à traiter

Quelqu'un a-t'il une idée à sugérer?

Merci pour votre aide,

Dark.
Modifié par Dark$hadow (06 Jul 2010 - 20:05)
Salut,

Tu détaches la partie qui t'intéresses et utilise jQuery.globalEval pour exécuter le js.

//xml : le document xml
$.globalEval($("view", xml/*$(xml)*/).detach().text());
//xml ne contient plus le code js
Euhh sois je n'ai pas compris ton idée, sois tu n'as pas saisi mon problème (me suis ptet mal exprimé) Smiley smile

En fait je ne cherche pas à faire exécuter du code js récupéré en ajax mais a parser d'une part de l'xHTML et d'autre part de l'XML contenu dans une réponse AJAX (en sachant que la partie xHTML est contenu dans des portions de code CDATA.

Merci pour ton aide.
Arf, je suis parti en délire Smiley biggol .

Alors il y a detach si tu veux enlever de la partie xml et html pour l'afficher.
//xml : le document xml récupéré via ajax
$("le_bloc_où_mettre_le_html").html($("view", xml/*$(xml)*/)/*.detach()*/.text()); 
//en utilisant detach xml ne contient plus le code html


Au passage, le seul caractère potentiellement dangereux est <.
Euhh si j'ai bien compris, je fais retourner de l'xml à mon controller php, et avec le detach, je serai en mesure d'utiliser une partie du flux xml pour le transformer en html et l'afficher dans ma page ?
Oui voilà, le detach va enlever le nœud view (celui contenant le cdata).
Ensuite on récupère le texte du cdata avec text().
Et on met le texte dans un bloc avec la fonction html (fonction qui "transforme" du texte en html).