Page 1 sur 1
[résolu] xmlhttprequest et charset
Publié : 31 août 2008, 16:27
par Bobe
Salut tout le monde,
J’ai un petit soucis avec firefox et xmlhttprequest.
j’envoie des données en xml via la méthode POST et j’ajoute donc l’entête content-type de la façon suivante :
Code : Tout sélectionner
...
xhr.open('POST', postdata_url, false);
xhr.setRequestHeader('Content-Type', 'application/xml; charset="UTF-8"');
xhr.send(doc);
...
Problème : À l’arrivée, J’obtiens l’entête content-type suivant -> application/xml; charset=ISO-8859-1
Je ne m’explique pas ce phénomène.
Publié : 31 août 2008, 23:01
par Bobe
De plus en plus bizzare.
Si je fais mon appel en GET, je reçois bien l’entête 'application/xml; charset="UTF-8' de l’autre côté
Publié : 02 sept. 2008, 02:02
par Bobe
C'est le
bug 431701, corrigé sur le tronc.
Publié : 04 sept. 2008, 17:04
par Bobe
Le bug est corrigé aussi dans firefox 3.0.2 en préparation.
Deux wordkaround sinon :
1°/ Vérifier côté serveur le contenu de l’entête "content-type" envoyé par le navigateur. Et si on trouve la chaîne ";charset=ISO-8859-1" (prévoir présence ou non des guillemets autour du nom du charset et la casse de ISO), on fait la conversation pour avoir nos données en UTF-8
Problème: Le navigateur aura converti les caractères non présents dans le charset ISO-8859-1 en entités numériques qu’il faudra donc aussi traiter
2°/ ne pas passer par createDocument() pour créer son script côté javascript mais faire:
Code : Tout sélectionner
var domDocument = new DOMParser().parseFromString("<?xml version='1.0' encoding='UTF-8'?><dummy/>","application/xml");
voir :
https://bugzilla.mozilla.org/show_bug.cgi?id=407213#c8
Bon, ça implique de songer à la compatibilité avec les autres navigateurs si besoin, et c’est sensiblement plus lent que createDocument()
Heureusement que ce bug très génant pour les applications ajax (je vous dis pas comment ça couine dans les commentaires bugzilla ^^) est corrigé sur le tronc
ET sur la branche qui donnera la 3.0.2 dans les prochaines semaines.
EDIT: je mets ce sujet en [résolu]. Merci de votre attention ^^
Publié : 28 nov. 2008, 20:46
par lpgc
perso ... j'ai un autre problème sûrement du même style ...
je viens de passer en version Gecko/2008102920 Firefox/3.0.4
et visiblement ce code ne fonctionne plus :
Code : Tout sélectionner
xmlhttp=new XMLHttpRequest()
xmlhttp.onreadystatechange = state_Change;
xmlhttp.open("POST",url,true)
xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
alert( "1 XMLDoc1 :"+DataToSend)
xmlhttp.send(DataToSend);
Une idée ?
cela fonctionnait très bien avant ! sous IE 7 et Firefox 2
le problème à l'air de se situer sur la Form qui n'est pas reçue pas le serveur ( page.asp )
OU pas envoyée ? en tout cas problème de compatibilité !

en local avec un serveur IIS et asp çà fonctionne
Message envoyé avec : Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.9.0.4) Gecko/2008102920 Firefox/3.0.4
Publié : 29 nov. 2008, 10:19
par lpgc
quelques tests ... c'est bizarre
http://support.mozilla.com/tiki-view_fo ... &forumId=1
sûrement mon code
Message envoyé avec : Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.9.0.4) Gecko/2008102920 Firefox/3.0.4
Publié : 20 déc. 2008, 00:18
par lpgc
drôle de problème ... vraiment une combinaison de facteurs ... pas de bol quoi
Veuillez noter que c'est un probleme de lecture de script avec Chiliasp (qui est utiliser sur nos serveurs). Je suis desolé, mais nous ne pouvons rien y faire a ce propos. Nos techniciens vous propose d'utilisez PHP au lieu de ASP.
En bref il faut les facteurs :
-1 Firefox 3
-2 Ajax POST application/x-www-form-urlencoded
-3 Chiliasp
Finalement résolu en utilisant un multipart/form-data
Message envoyé avec : Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.9.0.5) Gecko/2008120122 Firefox/3.0.5