Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

caractère ¤ remplacé par ? en ajax

16 réponses
Avatar
Davy Crockett
Bonjour,

J'utilise de l'ajax pour mettre à jour une liste de choix en fonction
d'une autre.

Dans ce cadre, le serveur doit renvoyer des informations qui intègrent
le caractère euro ¤. Cependant le résultat à l'affichage dans la liste
de choix donne le signe ? en lieu et place du ¤.

Je suppose que ce problème vient de l'instruction :
xhr_object.setRequestHeader("Content-type",
"application/x-www-form-urlencoded"); méthode d'envoi POST

Comment puis-je le modifier pour que xhr_object.responseText me renvoie
des ¤ au lieu de ?.


Merci

10 réponses

1 2
Avatar
Pascal PONCET
Davy Crockett a écrit :
Dans ce cadre, le serveur doit renvoyer des informations qui intègrent
le caractère euro ¤. Cependant le résultat à l'affichage dans la liste
de choix donne le signe ? en lieu et place du ¤.



Bonjour,

Est-ce que le caractère "¤" s'affiche correctement avec l'entité
"€" dans les données source ?

Cordialement,
Pascal
Avatar
SAM
Le 12/3/08 3:39 PM, Davy Crockett a écrit :
Bonjour,

J'utilise de l'ajax pour mettre à jour une liste de choix en fonction
d'une autre.

Dans ce cadre, le serveur doit renvoyer des informations qui intègrent
le caractère euro ¤. Cependant le résultat à l'affichage dans la liste
de choix donne le signe ? en lieu et place du ¤.

Je suppose que ce problème vient de l'instruction :
xhr_object.setRequestHeader("Content-type",
"application/x-www-form-urlencoded"); méthode d'envoi POST



Non, ça vient de :
- l'encodage de ta page
- l'encodage de ta base de donnée

En quel charset ta page est-elle écrite ?
Quel charset les en-têtes serveur spécifient-elles ?
Est-ce que tu demandes à ta base de renvoyer les données traduites en
utf-8 ?
ou bien à minima sont-elles htmlentitéyées ?
(cf fonction php htmlentities)

Comment puis-je le modifier pour que xhr_object.responseText me renvoie
des ¤ au lieu de ?.



Je ne suis pas certain qu'on puisse agir à ce niveau.
Il me semble que, par défaut, XHR travaille en utf-8.

Breffle, essaie l'encodage utf-8 partout.
ou tente d'avoir tes données en html-entités ( ;euro; ou sinon € )

--
sm
Avatar
Cenekemoi
Bonjour à Davy Crockett qui nous a écrit :
Bonjour,

J'utilise de l'ajax pour mettre à jour une liste de choix en fonction
d'une autre.

Dans ce cadre, le serveur doit renvoyer des informations qui intègrent
le caractère euro ¤. Cependant le résultat à l'affichage dans la liste
de choix donne le signe ? en lieu et place du ¤.

Je suppose que ce problème vient de l'instruction :
xhr_object.setRequestHeader("Content-type",
"application/x-www-form-urlencoded"); méthode d'envoi POST

Comment puis-je le modifier pour que xhr_object.responseText me
renvoie des ¤ au lieu de ?.


Merci



Tu devrais essayer :
xhr_object.setRequestHeader("Content-Type","text/html;charset=UTF-8");

--
Cordialement, Thierry ;-)
Avatar
Mayeul
Cenekemoi a écrit :
Bonjour à Davy Crockett qui nous a écrit :
Bonjour,

J'utilise de l'ajax pour mettre à jour une liste de choix en fonction
d'une autre.

Dans ce cadre, le serveur doit renvoyer des informations qui intègrent
le caractère euro ¤. Cependant le résultat à l'affichage dans la liste
de choix donne le signe ? en lieu et place du ¤.

Je suppose que ce problème vient de l'instruction :
xhr_object.setRequestHeader("Content-type",
"application/x-www-form-urlencoded"); méthode d'envoi POST

Comment puis-je le modifier pour que xhr_object.responseText me
renvoie des ¤ au lieu de ?.


Merci



Tu devrais essayer :
xhr_object.setRequestHeader("Content-Type","text/html;charset=UTF-8");




Euh, non. Il s'agit du header de la requête http faite au serveur, et
son content-type est application/x-www-form-urlencoded, pas text/html.

--
Mayeul
Avatar
Cenekemoi
Bonjour à Mayeul qui nous a écrit :
Cenekemoi a écrit :
Bonjour à Davy Crockett qui nous a écrit :
Bonjour,

J'utilise de l'ajax pour mettre à jour une liste de choix en
fonction d'une autre.

Dans ce cadre, le serveur doit renvoyer des informations qui
intègrent le caractère euro ¤. Cependant le résultat à l'affichage
dans la liste de choix donne le signe ? en lieu et place du ¤.

Je suppose que ce problème vient de l'instruction :
xhr_object.setRequestHeader("Content-type",
"application/x-www-form-urlencoded"); méthode d'envoi POST

Comment puis-je le modifier pour que xhr_object.responseText me
renvoie des ¤ au lieu de ?.


Merci



Tu devrais essayer :

xhr_object.setRequestHeader("Content-Type","text/html;charset=UTF-8");




Euh, non. Il s'agit du header de la requête http faite au serveur, et
son content-type est application/x-www-form-urlencoded, pas text/html.



Euh, non. Le content-type du header n'est pas nécessairement
"application/x-www-form-urlencoded", il peut être ce que tu veux. A toi
ensuite de gérer convenablement ce que tu reçois sur ton serveur.

--
Cordialement, Thierry ;-)
Avatar
Davy Crockett
> Est-ce que le caractère "¤" s'affiche correctement avec l'entité
"€" dans les données source ?



Quand ça s'affiche dans une liste de choix, ça affiche €
Avatar
Davy Crockett
Cenekemoi avait énoncé :

Tu devrais essayer :

xhr_object.setRequestHeader("Content-Type","text/html;charset=UTF-8");








En fait quand je mets cette ligne ça renvoie une erreur javascript sur
la page et l'objet xhr_object est vide.
Avatar
Davy Crockett
> En quel charset ta page est-elle écrite ?


<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"
/>

Est-ce que tu demandes à ta base de renvoyer les données traduites en utf-8 ?



En fait ma base de données , n'intervient pas à ce niveau, car le
caractère ¤ est issu du code PHP de la page qui sert de traitement.

Breffle, essaie l'encodage utf-8 partout.



J'ai mis ma page en utf-8 mais ça ne résout pas le pb.
Avatar
Cenekemoi
Bonjour à Davy Crockett qui nous a écrit :
Cenekemoi avait énoncé :

Tu devrais essayer :

xhr_object.setRequestHeader("Content-Type","text/html;charset=UTF-8");








En fait quand je mets cette ligne ça renvoie une erreur javascript sur
la page et l'objet xhr_object est vide.



???

Peux-tu, stp, mettre le code Ajax que tu utilises pour lancer ta requête
?

--
Cordialement, Thierry ;-)
Avatar
Davy Crockett
Cenekemoi avait soumis l'idée :

Peux-tu, stp, mettre le code Ajax que tu utilises pour lancer ta requête ?



Oui bien sur :
function sendData()
{
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","sel_fact2.php", true);
xhr_object.onreadystatechange = function() {
if(xhr_object.readyState == 4) {
eval(xhr_object.responseText);
//alert (xhr_object.responseText); // debug mode
}
}


xhr_object.setRequestHeader("Content-type",
"application/x-www-form-urlencoded");


var data='id_client='+window.document.forms['form1'].liste1.value;
xhr_object.send(data);
}


Fichier de traitement PHP

<?php

include("../inc/connect.inc.php");
include("../fonction/calcul.php");


$sql2="SELECT
id_doc,solde,date_doc,codemission,n_client,facture.Create,exercice,acompte
FROM facture JOIN mission ON mission.id_missionúcture.id_mission JOIN
client ON client.id_client=mission.id_client JOIN typemission ON
id_typemission=mission.typemission WHERE
client.id_client=".$_POST['id_client']." and regle<>-1 ORDER BY
id_doc";
$result2=mysql_query($sql2) or die ("Requête incorrecte : ".$sql2."
".mysql_error());


echo 'var o = null;';
echo 'var s = document.forms["form1"].elements["liste2"];';
echo 's.options.length = 1;';

while($row2 = mysql_fetch_array($result2))
{

$m = substr($row2[date_doc], 5, 2);
$a = substr($row2[date_doc], 0, 4);
$d = substr($row2[date_doc], 8, 2);

//$myttc=number_format(ttc($row2[id_doc],$row2[remise]), 2, ',', '
');
$netapayer=number_format((ttc($row2[id_doc],$row2[remise])-$row2[acompte]),
2, ',', ' ');
$intitule="Facture du ".$d."/".$m."/".$a." de ".$netapayer." ¤
TTC";
$ref=ref_facture($row2[id_doc]);
$intitule=$intitule." (".$ref.")";

echo 's.options[s.options.length] = new
Option("'.$intitule.'",'.$row2[id_doc].');';

}
1 2