Ayant fait le tour de nombreux post, je n'arrive toujours pas a trouver une reponse :
J'ai une page PHP avec un div dans laquelle il y a un include page.php en iso.
J'ai une fonction ajax qui sert à recharger page.php :
div étant le nom du div et requete etant page.php
function menu(div,requete){
var xhr_object = null;
if(window.XMLHttpRequest) // Firefox
xhr_object = new XMLHttpRequest();
else if(window.ActiveXObject) // Internet Explorer
xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
else { // XMLHttpRequest non supporté par le navigateur
alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
return;
}
xhr_object.open("POST", requete, true);
xhr_object.onreadystatechange = function() {
if(xhr_object.readyState == 4) {
le probléme c'est que au lancement de page.php => tout est ok au niveau des caractères
mais aprés la requete, page.php présente des caractères en utf8.
J'ai essayé utf8_decode() utf8_encode().... et rien ne fonctionne car si j'encode les champs de page.php => ils seront en utf8 donc ilisibles à la première ouverture de page.
Et la foncton setRequestHeader ne re encode pas la page en iso aprés la script ajax.
ma fonction d'appel du script est menu(div,requete)
j'ai modifié la fonction ajax :
function menu(div,requete){
newrequete=requete+'?reload=1';
var xhr_object = null;
if(window.XMLHttpRequest) // Firefox
xhr_object = new XMLHttpRequest();
else if(window.ActiveXObject) // Internet Explorer
xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
else { // XMLHttpRequest non supporté par le navigateur
alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
return;
}
xhr_object.open("GET", newrequete, true);
xhr_object.onreadystatechange = function() {
if(xhr_object.readyState == 4) {
document.getElementById(div).innerHTML = xhr_object.responseText;
}
}
xhr_object.send(null);
}
dans page.php :
au debut :
ob_start();
à la fin :
$buffer=ob_get_clean();
if (isset($_GET["reload"])){$buffer = utf8_encode($buffer); }
echo $buffer;
comme ça :
si c'est l'affichage initial => pas de probleme de caractere
si c'est un reload de la page => on encode