guepard53
Messages postés35Date d'inscriptionsamedi 16 août 2003StatutMembreDernière intervention23 février 2009
-
26 juin 2007 à 17:54
guepard53
Messages postés35Date d'inscriptionsamedi 16 août 2003StatutMembreDernière intervention23 février 2009
-
23 févr. 2009 à 15:25
Hello à tous,
j'ai un petit souci avec l'utilisation d'AJAX et ASP.NET (C#) :
quand j'envoie des données au serveur en POST via AJAX, mes accents (notamment) ne passent pas et côté serveur, il n'y a rien à la place (pas de ?, ni le code %xx qui aurait dû remplacer l'accent suite à l'utilisation de la fonction escape)
si j'envoie les données en GET, je n'ai pas ce problème...
si ne n'utilise pas escape, j'ai bien mes accents côté serveur mais par contre, ça plante pour les caractères comme & qui sont interprétés... (d'où l'utilisation de escape)
J'ai essayé différents charset utf-8, ISO-machin, ... mais ça ne change rien.
Avez-vous déjà rencontré ce genre de problème ?
Voici mon code côté client :
parameters += "&var=" + escape("testé")
//ouverture de la page côté serveur via l'objet ajax
xmlHttp.open("POST","EmployeeDB.aspx",true);
//indication dans l'en-tête de la page qu'il y a des infos passées en POST
Arto_8000
Messages postés1044Date d'inscriptionlundi 7 mars 2005StatutMembreDernière intervention13 juillet 20107 27 juin 2007 à 05:48
Plusieurs possibilités :
J'ai jamais utiliser, le content-length avec AJAX, je doute que ce soit utile et que cela change quelque chose à tes requêtes. À tu essayer sans, à tu essayé avec une autre chaîne du genre "requêtes" ?
Le problème peut aussi être à cause du traitement que ASP. Net fait par défault sur tes paramètre GET et POST. Et dieux c'est qu'il en fait du traitement pour prendre autant de temps à générer des pages ...
Arto_8000
Messages postés1044Date d'inscriptionlundi 7 mars 2005StatutMembreDernière intervention13 juillet 20107 27 juin 2007 à 19:30
Le content-length fait que le serveur arrête de lire le contenu après X caractère(s). Dans ta chaîne de test c'est le dernier caractère qui ne se rend pas au serveur. Donc, j'ai cru que c'était juste le dernier caractère qui était cropper et non les caractères avec des accents, d'oû "requêtes", car l'accent se trouve au milieu. Si le problème est seulement avec le content-length seulement "requête" va être lu par le serveur, s'il est avec l'accent seulement "requtes" va être lu par le serveur.
Sinon j'ai l'impression que c'est "parametres.length + 1" que tu dois mettre pour le content-length au lieu de "parametres.length". J'ai une petite idée de pourquoi ASP aurait se comportement, mais c'est un peu complexe comme truc.
C'est probablement à cause de fait que tout les chaines de caractère ont un byte null à la fin.
guepard53
Messages postés35Date d'inscriptionsamedi 16 août 2003StatutMembreDernière intervention23 février 2009 28 juin 2007 à 09:15
Re :)
Ca ne vient de là, si je mets 12 accents au milieu de ce que j'envoie (teéèéééèèst), il reçoit test... On dirait qu'il n'aime pas les %xx qui sont générés par escape pour convertir les caractères spéciaux... :-/
Vous n’avez pas trouvé la réponse que vous recherchez ?
Arto_8000
Messages postés1044Date d'inscriptionlundi 7 mars 2005StatutMembreDernière intervention13 juillet 20107 28 juin 2007 à 16:08
Dernier petit essaie pour comprendre, ta variable qui reçoit tes paramètres, elle est signé ou pas ? Un string signé ne peut prendre que les caractères ASCII de 0 à 127 et les accents se trouvent après le 127.
Essaie en déclarant tes string non signé (unsigned)
guepard53
Messages postés35Date d'inscriptionsamedi 16 août 2003StatutMembreDernière intervention23 février 2009 28 juin 2007 à 16:11
Re,
je doute que ce soit cela vu que tout passe bien sans faire un escape côté javascript.
Bon, je vais contourner en ne faisant pas d'escape mais en remplaçant les caractères qui pourraient poser problème (comme &) par le code correspondant (%26 pour &). En faisant comme ça, ça fonctionne mais j'trouve pas ça très propre. Donc si quelqu'un trouve une solution, je suis toujours preneur.
guepard53
Messages postés35Date d'inscriptionsamedi 16 août 2003StatutMembreDernière intervention23 février 2009 23 févr. 2009 à 15:25
Salut,
comme je disais plus haut, en faisant un replace des caractères posant problèmes par le code hexa correspondant (& --> %26, ...). Je n'utilise plus escape qui aurait dû faire ce travail tout seul...
J'me suis donc fait une petite fonction myEscape() moi-même.