Bon je crois que j'ai compris d'où provient mon souci :
Les réponses aux requêtes HTTP (via httpRequest ici) se font visiblement avec un charset définit par défaut à UTF8 dans l'entête. L'entête utilisé par le navigateur pour décoder les caractères de mon <div> n'est donc plus celui définit dans ma page HTML de base et dans mes pages PHP : ISO-8859-1
J'ai trouvé et essayé cette fonction :
xmlHttp.overrideMimeType("text/html; charset=ISO-8859-1");
Pour définir l'entête de mon appel ajax avec les mêmes propriété que celle de ma page.
Cela fonctionnne très bien sur firefox mais pas sur IE
Voici mon code Ajax au complet :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| function ajaxFunction(url, divId) {
var xmlHttp;
try {
// Firefox, Opera 8.0+, Safari
xmlHttp=new XMLHttpRequest();
} catch (e) {
// Internet Explorer
try {
xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
} catch (e) {
alert("Your browser does not support AJAX!");
return false;
}
}
}
xmlHttp.onreadystatechange=function() {
if(xmlHttp.readyState==4) {
document.getElementById(divId).innerHTML=xmlHttp.responseText;
}
}
xmlHttp.open("GET",url,true);
xmlHttp.overrideMimeType("text/html; charset=ISO-8859-1");
xmlHttp.send(null);
} |
ps : je me rend bien compte que le sujet dérive vers AJAX plus que vers PHP mais je n'aurais pas pu le dire initialement !
Partager