Sorry je n'avais pas lu la totalité de ton post.
Tu as titré ajax est cela m'a induit en erreur.
en fait tu fais un appel XMLHttpRequest pour obtenir un fragment HTML.
donc là deux solution.
soit tout est homogène toutes tes pages et tes fragments on le même encoding.
tu peux alors utiliser le frangment tel quel
Code:
document.getElementById ("myDiv").innerHTML=xmlhttp.responseText
soit tout n'est pas homogène. tes fragments n'ont pas tous le même encoding.
tu peux alors produire des fragments XML avec l'encoding de ton choix
Code:
1 2 3 4
| <?xml version="1.0" encoding="iso-8859-1"?>
<fragment>
<!-- ici ton code html -->
</fragment> |
le nom de la balise XML est au choix. tu peux alors utiliser les capacité XML de XMLHttpRequest (qui a été conçu pour ça.) tu récupère alors le DOM directement
Code:
1 2 3
| getElementById('myDiv').appendChild(
xmlhttp.responseXML.firstChild.firstChild
); |
si ton fragment contient plusieurs balises
Code:
1 2 3 4 5
| var racine = xmlhttp.responseXML.firstChild;
var div = getElementById ('myDiv');
for(var i = 0; i< racine.childNodes.length; i++){
div.appendChild(racine.childNodes[i]);
} |
en clair tu laisse ton navigateur créer le DOM en fonction de l'encoding du fragment
ensuite tu déplace les éléments du DOM qui t'intéresse dans le DOM de ta page.
les deux étant des éléments dans le format interne à ton navigateur il ne s'agit pas de string mais d'objet il n'y a donc pas d'encoding.
si tu tien ou que tu as vraiment besoin de récupérer le code source html tu peux
faire ainsi
Code:
xmlhttp.responseXML.firstChild.innerHTML
je n'en vois pas l'intérêt.
une dernière précision
un fragment XML doit être conforme XML donc les balise type img doivent être fermées
Code:
<img src='mon_image.gif' />
c'est aussi la raison de la présence d'une balise XML englobante (fragment ci-dessus)
Code:
1 2
| <img src='mon_image.gif' />
<a href='page.html'>un lien</a> |
ce code n'est pas conforme XML (même pas HTML) la raison est qu'un document XML (HTML) ne doit avoir qu'une seul balise racine (la balise html pour HTML) et un fragment est un document.
on ajoute donc une balise juste pour englober le fragment.
Code:
1 2 3 4 5
| <?xml version="1.0" encoding="iso-8859-1"?>
<fragment>
<img src='mon_image.gif' />
<a href='page.html'>un lien</a>
<fragment> |
A+JYT