Partage
  • Partager sur Facebook
  • Partager sur Twitter

[AJAX] transférer du contenu html

Sujet résolu
    23 août 2011 à 18:42:27

    Bonjour amis zéros,
    Je viens avec vous après pas mal de recherches vaines sur Google..
    J'ai suivi le tuto "AJAX et l'échange de données en JavaScript", et malgré qu'il m'ait été très utile je n'arrive toujours pas à faire ce que je veux.
    Dans le tuto il est expliqué comment traiter une réponse XML de la forme suivante :
    <?xml version="1.0" encoding="utf-8"?>
    <list>
    	<item id="0" name="Programme A" />
    	<item id="1" name="programme B" />
    	...
    </list>
    

    mais que faire dans le cas de données de la forme :

    <?xml version="1.0" encoding="utf-8"?>
    <list>
    	<item id="0" name="Programme A" />
    	<blop>ici le texte à récupérer, avec <strong>éventuellement</strong> quelques <br /> balises dedans</blop>
    </list>
    

    En fait ma page ciblée par AJAX (une page xml générée en PHP) renvoie, entre autres choses, une liste de liens rendus cliquables à l'aide de PHP. Cette liste (du texte) contient donc des balises <a> ; en la passant simplement en argument name d'une balise, la page XML généréé n'est pas comprise ("ereur : entité mal définie"). Voilà pourquoi je souhaiterai placer mon texte entre deux balises. Sauf qu'à partir de là je n'arrive pas du tout à le récupérer... J'ai essayé le bon vieux innerHTML (je sais, c'est mal ! :-° ) mais pas moyen. Je me dis que ce doit bien être jouable de transférer des données de ce genre ! Peut-être avec du DOM ?
    Si quelqu'un a une piste, merci d'avance.

    EDIT : En fait... je me suis arrêté avant le chapitre sur l'implémentation DOM, c'est justement ce qu'il me faut. Mais puisque j'ai posté ce sujet, certains pourront peut-être me répondre : pourquoi ne peut-on pas utiliser un innerHTML dans ce cas-là ? Merci
    • Partager sur Facebook
    • Partager sur Twitter
      24 août 2011 à 12:36:36

      Pour ma part, voici la fonction que j'utilise quand je veux obtenir un fichier quelle que soit l’extension :

      function loadFile(url)
      {
      	var xhr = new XMLHttpRequest();
      	xhr.open("GET",url, false);
      	xhr.send(null);
      	if(xhr.readyState == 4 && xhr.status == 200)
      	{
      		var text = xhr.responseText;
      		return text;
      	}
      }
      


      Après si je te conseille de renvoyer soit du HTML avec ton php soit du JSON selon tes besoins, parce que faire du innerHTML avec du XML ça le fait pas trop :p
      Sinon tu peux aussi parser ton fichier XML avec les regex!
      Mais selon moi, le mieux c'est le JSON compris nativement par Javascript et qui structure tes données de manière très simple
      • Partager sur Facebook
      • Partager sur Twitter
        24 août 2011 à 20:26:35

        merci pour ta réponse, effectivement on peut toujours travailler sur du texte mais il y a des cas où c'est quand même dommage de ne pas utiliser le XML ! pour le JSON je ne peux pas te dire, pas encore essayé.
        Pour mon problème je m'en suis sorti en recevant du xml que je parse pour récupérer ce dont j'ai besoin. Un peu lourd mais je crois qu'il n'y a pas bien le choix. Et après tout c'est toujours amusant de se faire un petit parser ;)
        • Partager sur Facebook
        • Partager sur Twitter

        [AJAX] transférer du contenu html

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown