[Ajax] probleme de charset

 
death83
WRInaute discret
WRInaute discret
 
Messages: 90
Inscription: Sam Jan 07, 2006 0:06

[Ajax] probleme de charset

Message le Mer Mar 08, 2006 23:12

Salut a tous,

J'ai fait un truc tout bete en AJAX:

Code: Tout sélectionner
<input id="moteur" class="moyeninput2" type="text" name="motcle" onkeyup="go(document.getElementById(\'moteur\').value,\'afftab\',\'../AJAX/accueilmanga.php?motcle=\');">

La fonction go est une fonction qui va communiquer avec la page php suivante:

Code: Tout sélectionner
<?php
include ('../BDD/connection.php');
$search=$_GET['motcle'];
echo $search;
?>


grace a :
Code: Tout sélectionner
   function go(envoi,idcible,page_ajax){
         
             getXhr()
            
            xhr.onreadystatechange = function(){
               
               if(xhr.readyState == 4 && xhr.status == 200)
               {   
                  text_renv = xhr.responseText;
                  document.getElementById(idcible).innerHTML=text_renv;
               }
            }
            xhr.open("GET",page_ajax+envoi,true);
            xhr.send(null);
         }


J'ai donc en temps rélle ce que je tape dans l'input qui apparait sur ma page.

Mais quand je fais des ' ou " il me rajoute un \ devant et les accent ne sont pas bien affiché. Comme si il avait changer le charset d'une page a l'autre.

Vous savez pourquoi?

Consultez la formation au référencement naturel Google de WebRankInfo / Ranking Metrics


MarvinLeRouge
WRInaute impliqué
WRInaute impliqué
 
Messages: 450
Inscription: Mer Sep 01, 2004 21:10

Message le Mer Mar 08, 2006 23:25

Salut,

Regarde du côté de urldecode et urlencode, ça pourrait résourdre ton problème.

death83
WRInaute discret
WRInaute discret
 
Messages: 90
Inscription: Sam Jan 07, 2006 0:06

Message le Mer Mar 08, 2006 23:57

Non ca ne peut pas etre ca car j'affiche du texte qui n'est pas passé par l'url. Et qui ne s'affiche pas correctement non plus.


par exemple si sur ma page que j'appelle je faire un echo ''Série";
ca va m'afficher dans la page qui appelle:
S�ries

lapincouch
WRInaute discret
WRInaute discret
 
Messages: 56
Inscription: Ven Aoû 27, 2004 11:18

Message le Jeu Mar 09, 2006 12:28

L'AJAX envoie TOUJOURS les données encodées en UTF8!!!

Il faut décoder les données reçues à l'aide de la fonction utf8_decode.

Par exemple en PHP :

Code: Tout sélectionner
foreach($_POST as $key => $val){
    $_POST[$key] = utf8_decode($val);
}


Phix
WRInaute impliqué
WRInaute impliqué
 
Messages: 418
Inscription: Mar Juin 15, 2004 23:05

Message le Jeu Mar 09, 2006 12:33

Sinon, dans la page php, tu insères:
Code: Tout sélectionner
header('Content-Type: text/html; charset=ISO-8859-1');

en début de code, comme ca tout est envoyé directement en iso 8859 et pas besoin de fonction utf8...

lapincouch
WRInaute discret
WRInaute discret
 
Messages: 56
Inscription: Ven Aoû 27, 2004 11:18

Message le Jeu Mar 09, 2006 12:37

Sinon, dans la page php, tu insères:


tu veux dire dans la page receptrice du formulaire?
ou celle qui contient le formulaire?


Bourriquet
WRInaute passionné
WRInaute passionné
 
Messages: 635
Inscription: Lun Sep 19, 2005 23:10

Message le Jeu Mar 09, 2006 12:54

Phix a écrit:Sinon, dans la page php, tu insères:
Code: Tout sélectionner
header('Content-Type: text/html; charset=ISO-8859-1');

en début de code, comme ca tout est envoyé directement en iso 8859 et pas besoin de fonction utf8...


+1 : j'allais le dire. C'est ce que j'utilise systèmatiquement et ça a palier au problème.


Phix
WRInaute impliqué
WRInaute impliqué
 
Messages: 418
Inscription: Mar Juin 15, 2004 23:05

Message le Jeu Mar 09, 2006 12:57

lapincouch a écrit:tu veux dire dans la page receptrice du formulaire?
ou celle qui contient le formulaire?


Celle qui est appellée en Ajax :

Code: Tout sélectionner
<?php
include ('../BDD/connection.php');
$search=$_GET['motcle'];
echo $search;
?>


devient :

Code: Tout sélectionner
<?php
header('Content-Type: text/html; charset=ISO-8859-1');
include ('../BDD/connection.php');
$search=$_GET['motcle'];
echo $search;
?>

death83
WRInaute discret
WRInaute discret
 
Messages: 90
Inscription: Sam Jan 07, 2006 0:06

Message le Jeu Mar 09, 2006 14:35

Oki merci je vais essayer ca ce soir et je vous dirais si ca marche.

death83
WRInaute discret
WRInaute discret
 
Messages: 90
Inscription: Sam Jan 07, 2006 0:06

Message le Jeu Mar 09, 2006 19:42

Merci ca marche avec le header ;).

lapincouch
WRInaute discret
WRInaute discret
 
Messages: 56
Inscription: Ven Aoû 27, 2004 11:18

Message le Jeu Mar 09, 2006 22:03

ça marche pas chez moi :cry:

par contre, j'utilise ce code javascript, cà vient peut-être de là?

Code: Tout sélectionner
function Request( url, action )
{
   var obj =  loadXMLObj() ;
   //if ( obj == false ) { alert("AJAX ne peut pas être initialisé.\nL'administration est impossible."); return; }
   obj.open("POST", url, false ) ;
   /*
   'this value is ignored, but the step is necessary
xmlRequest.setRequestHeader "Cookie", "any non-empty string here"
'set all cookies here
xmlRequest.setRequestHeader "Cookie", "cookie1=value1; cookie2=value2"
*/
   obj.setRequestHeader('Content-Type','application/x-www-form-urlencoded; charset=iso-8859-1');
  //obj.setRequestHeader('Content-Type','text/plain');
  //objHTTP.send("id=1&user="+txtUser.value+"&password="+txtPassword.value);
   /*
   obj.onreadystatechange=function()
    {
   if (xmlhttp.readyState==4)
      {
     if (xmlhttp.status==200) alert("URL Exists!")
     else if (xmlhttp.status==404) alert("URL doesn't exist!")
     else alert("Status is "+xmlhttp.status)
  }
*/
  action =  "date=" + Date() + (action =="" ? "" : "&" + action) ;
   obj.send( action );
  data = obj.responseText   ;
   //alert(data);
   return data ;
}

function loadXMLObj()
{
   obj = false;
   // branch for native XMLHttpRequest object
   if (window.XMLHttpRequest) { try {   obj = new XMLHttpRequest();   } catch(e) { obj = false;   }      }
   // branch for IE/Windows ActiveX version
   else if(window.ActiveXObject)
      {
      try {   obj = new ActiveXObject("Msxml2.XMLHTTP");}
      catch(e)
         {
         try {   obj = new ActiveXObject("Microsoft.XMLHTTP");   } catch(e) { obj = false; }
         }
      }
  return obj ;
}


merci bien pour toutes ces idées... :wink:

death83
WRInaute discret
WRInaute discret
 
Messages: 90
Inscription: Sam Jan 07, 2006 0:06

Message le Ven Mar 10, 2006 8:49

[quote="lapincouch"]ça marche pas chez moi :cry:

par contre, j'utilise ce code javascript, cà vient peut-être de là?
[/code]
Ca dépend tu utilise quel charset sur tes pages toi.

C'est sur que si tu n'utilise pas le même que moi ca ne marchera pas.

Tu es peut etre en utf8 non?

lapincouch
WRInaute discret
WRInaute discret
 
Messages: 56
Inscription: Ven Aoû 27, 2004 11:18

Message le Ven Mar 10, 2006 9:54

non, en fait la page qui contient le formulaire est en iso,
par contre, la page appelée n'a pas de charset prédéfini car elle fait toujours une redirection.

Jeff974
Nouveau WRInaute
 
Messages: 1
Inscription: Ven Avr 21, 2006 9:24

Message le Ven Avr 21, 2006 9:26

Salut,
j'ai trouvé une solution bien plus pratique que de rajouter un header dans chaque fichier.
Il suffit d'utiliser
Code: Tout sélectionner
overrideMimeType('text/html; charset=ISO-8859-15');

Comme dans l'exemple suivant :
Code: Tout sélectionner
req.open("GET", url, true);
req.overrideMimeType('text/html; charset=ISO-8859-15');
req.send(null);

 

Modérateurs: WebRankInfo, e-kiwi, OTP, fandecine, Patrice A.

Formation recommandée sur ce thème :

Formation Référencement naturel Google : apprenez une méthode efficace pour optimiser à fond le référencement naturel dans Google de façon durable... Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.

Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités