Précédent   Forum des professionnels en informatique > PHP > Langage > Formulaires
Formulaires Forum d'entraide sur les formulaires avec PHP. Avant de poster -> FAQ formulaires, Cours de formulaires et Sources de formulaires
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 06/07/2007, 11h12   #1
Invité de passage
 
Inscription : juillet 2005
Messages : 8
Détails du profil
Informations forums :
Inscription : juillet 2005
Messages : 8
Points : 3
Points : 3
Par défaut Encodage lors d'un appel HttpRequest et utilisation de Smarty

Bonjour,

Je souhaite définir une fonction AJAX qui a pour but d'ajouter à ma page HTML un div avec un formulaire prérempli lors d'un click utilisateur.

J'utilise PHP et smarty comme moteur de template pour mes pages.

Tout fonctionne très bien si ce n'est l'encoding de mon div ajax qui n'est pas le même que celui de ma page. Je suis en ISO-8859-1 (*) pour les pages mais je pense que je dois encoder en UTF8 les div HttpRequest (vu les caractères bizarres que j'obtient).

Y a t'il un moyen propre de définir/changer l'encoding de ce que génèrer la fonction display de smarty ?

(*) : je suis sur un vieux projet et je ne peux pas changer !!!
tetsuo666 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/07/2007, 18h36   #2
Modérateur
 
Avatar de blueice
 
Inscription : mars 2003
Messages : 3 422
Détails du profil
Informations personnelles :
Âge : 37
Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

Informations forums :
Inscription : mars 2003
Messages : 3 422
Points : 4 110
Points : 4 110
Envoyer un message via ICQ à blueice Envoyer un message via MSN à blueice Envoyer un message via Skype™ à blueice
A mon avis le problème vient du code du formulaire, il faut s'assurer que les caractères spéciaux soient bien encodés...
Sinon il suffit de changer ton tpl correspondant à l'en-tête et de mettre UTF-8
__________________
-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_SIGNATURE -_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-
Dans la mesure du possible, essayez de montrer votre problème en situation réelle en nous donnant une url, que l'on puisse tester.
Pensez également à cocher

Aucun problème ne doit être résolu en MP (Message Privé) le forum est là pour ça.

Dimension Internet - Carnet Web
Imprimerie Nice
blueice est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/07/2007, 10h53   #3
Invité de passage
 
Inscription : juillet 2005
Messages : 8
Détails du profil
Informations forums :
Inscription : juillet 2005
Messages : 8
Points : 3
Points : 3
Non, si je déclare ma page avec
Code :
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
j'ai des caractères bizarres aussi bien dans mon formulaire que sur le restant de la page.

J'ai fais le test suivant, en PHP dans mon appel httpRequest, je fait
Code :
1
2
echo "éééé<br>"; 
echo utf8_encode("ééé");
ce qui donne des caractères bizarres uniquement dans la première ligne, alors que ma page est déclarée en ISO-8859-1...
tetsuo666 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/07/2007, 09h54   #4
Invité de passage
 
Inscription : juillet 2005
Messages : 8
Détails du profil
Informations forums :
Inscription : juillet 2005
Messages : 8
Points : 3
Points : 3
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 :
Code :
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 :
Code :
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 !
tetsuo666 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 20h06.


 
 
 
 
Partenaires

Hébergement Web