Xmlhttprequest

Résolu
amateurjava Messages postés 88 Date d'inscription vendredi 8 octobre 2004 Statut Membre Dernière intervention 12 octobre 2009 - 31 déc. 2007 à 01:54
amateurjava Messages postés 88 Date d'inscription vendredi 8 octobre 2004 Statut Membre Dernière intervention 12 octobre 2009 - 31 déc. 2007 à 12:45
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) {
             
             document.getElementById(div).innerHTML = xhr_object.responseText;   
             }
             
       }
       xhr_object.setRequestHeader('Content-type', 'text/html;charset=ISO-8859-1');     
       xhr_object.send(null);
}

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.

Qu'est ce que je dois faire ??

Merci de vos explications.

Faites vous plaisir !!

1 réponse

amateurjava Messages postés 88 Date d'inscription vendredi 8 octobre 2004 Statut Membre Dernière intervention 12 octobre 2009
31 déc. 2007 à 12:45
J'ai trouvé LA SOLUTION

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

Tout marche nikel.

Faites vous plaisir !!
3
Rejoignez-nous