ben ecoute moi dans mon appli ca marche mais j'interroge pas un fichier html mais du php avec un header xml
ben ecoute moi dans mon appli ca marche mais j'interroge pas un fichier html mais du php avec un header xml
Arf, je ne comprend plus rien ! J'ai mis ca dans le fichier de retour, et ca fonctionne... seulement j'ai encore une erreur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 <? include_once($_SERVER['DOCUMENT_ROOT']."global/lib.inc.php"); header("Content-Type: text/xml"); echo "<?xml version=\"1.0\" encoding=\"utf-8\" ?>"; ?> <div> <script type="text/javascript"> function toto(){ alert('bonjour '); } toto(); </script> Text en <b>HTML</b> </div>
"Cette interface n'est pas prise en charge"(seulement sous IE toujours)
le résultat deDonne :
Code : Sélectionner tout - Visualiser dans une fenêtre à part alert(xmlRequest.responseXML.nodeName);...#document
Bon, je crois que je vais me résigner... ca ne fonctionne pas sous IE...
Apparement il n'aime pas les setAttribute de type : "Type" ...
J'ai mis en commentaire pour voir ce que ca donné mais j'ai une autre erreur du même type (j'ai pas encore chercher ca provenance mais c'est lors de l'appelle récursif à la fonction addchild() )
Cette interface n'est pas prise en charge
Si je trouve une solution je vous dirai...
Merci encore
Arf ca y est je suis arrivé a ce que je voulais
Je me suis créer une classe qui utilise DOM en php.
Pour le coup c'est moins puissant que ce que je voulais mais ca va...
Voila pour ceux que ca intéresse :
que j'utilise ainsi:<?
class ajaxFluxXML {
    
    protected $dom;
    protected $main;
    protected $elements;
    protected $javascripts;
    
    
    public function __construct($version="1.0",$char="iso-8859-15")
    {
        $this->dom=new DOMDocument($version,$char);
        $main = $this->dom->createElement('main');
        $this->main = $this->dom->appendChild($main);
    }
    
    public function addElement($HTMLid,$HTMLcontenu)
    {
        $elem = $this->dom->createElement('elements');
        $this->elements = $this->main->appendChild($elem);
        $id=$this->dom->createElement('id',$HTMLid);
        $contenu=$this->dom->createElement('contenu',$HTMLcontenu);
        $this->elements->appendChild($id);
        $this->elements->appendChild($contenu);
        $this->elements->appendChild($contenu);
    }
    
    public function addScript($script)
    {
        $java = $this->dom->createElement('javascripts',$script);
        $this->javascripts = $this->main->appendChild($java);
    }
    public function __toString()
    {
        return $this->dom->saveXML(); 
    }
    
    public function setHeader()
    {
        header("Content-Type: text/xml");
    }
}
?>
Et le code javascript qui récupere le DOM:<?
include_once($_SERVER['DOCUMENT_ROOT']."global/lib.inc.php");
$contenu=<<<END
<div>
  Text en <b>HTML</b>
  <textarea>plop</textarea>
</div>
END;
$fluxAjax=new ajaxFluxXML();
$fluxAjax->addElement($_POST['noeuddest'],$contenu);
$fluxAjax->addScript("alert('bonjour');");
$fluxAjax->addScript("alert('bonjour2');");
$fluxAjax->setHeader();
print $fluxAjax;
?>
Voila voila, je débute avec l'objet DOM donc c'est surement améliorable..
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 function parseXMLresponse(reponseXML) { var elems = reponseXML.getElementsByTagName('elements'); var javas = reponseXML.getElementsByTagName('javascripts'); for(var i=0;i<elems.length;i++) { var id=elems[i].getElementsByTagName('id')[0].firstChild.nodeValue; var contenu=elems[i].getElementsByTagName('contenu')[0].firstChild.nodeValue; document.getElementById(id).innerHTML=contenu; } for(var i=0;i<javas.length;i++) { var scp=javas[i].firstChild.nodeValue; eval(scp); } }
Merci encore
en fait ce que j'utilise dans mon appli, c est un peu ça,
j' ai une classe Php qui me génère une réponse xml.
Bon moi c est des templates smarty que je fetch dans ma reponse mais le principe reste le même
Mais ce qui est bizarre c est que ça marche pour moi sur ie mon addchild
La différence c'est que mon html est dans une balise <response></response> de mon fichier xml.
Donc pas directement le documentElement en fait.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager