Certain caractère non transmis avec POST

Résolu
supers03 Messages postés 106 Date d'inscription mardi 6 janvier 2004 Statut Membre Dernière intervention 1 décembre 2008 - 18 janv. 2008 à 09:41
DieMaster Messages postés 3 Date d'inscription vendredi 8 octobre 2004 Statut Membre Dernière intervention 11 février 2008 - 11 févr. 2008 à 17:39
Bonjour,

Lorsque j'envoi  des données via ajax et la méthode POST, le caractère '+' n'est pas transmis, il est remplacé par un espace. J'imagine que c'est un problème d'encodage, mais je n'arrive pas à trouver la solution.

Pour info j'utilise :
setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
(j'ai copié/collé cette ligne sur un exemple d'ajax trouvé sur le net, donc si je doit la changer il n'y a pas de problème)
et pour le moment je n'ai pas défini d'header dans le script php qui reçoit.

Quelqu'un aurai un élément de réponse qui pourai me permettre d'avancer ?
merci d'avance,
Sylvain

9 réponses

PetoleTeam Messages postés 3426 Date d'inscription lundi 26 décembre 2005 Statut Membre Dernière intervention 14 janvier 2011 17
18 janv. 2008 à 17:08
Bonjour,
voir du coté de encodeURIComponent()
alert( encodeURIComponent('Bonjour+Toi'));
;O)
3
nickydaquick Messages postés 416 Date d'inscription vendredi 31 janvier 2003 Statut Membre Dernière intervention 19 décembre 2013 3
18 janv. 2008 à 15:47
Salut,
il y a certains caracteres qui sont reserves et doivent etre encodes explicitement pour etre transmis

$     = %24
&    = %26
+     =%2B
,      =%2C
/      =%2F
:      =%3A
;      =%3B
     %3D
?     =%3F
@   =%40

comme tu as tu le remarquer, il s'agit d'un ? suivant de la valeur un code ascii en Hexadecimal

J'espere avoir aide, salut

je suis heureux de faire partie d'une grande famille ...!
0
supers03 Messages postés 106 Date d'inscription mardi 6 janvier 2004 Statut Membre Dernière intervention 1 décembre 2008
18 janv. 2008 à 16:42
    Merci pour la réponse
C'est pas très pratique tout ça, y'aurai-t-il une/des fonctions qui encore ça directement ? bon toute façon je vais remplacer ça à la main c'est pas long à écrire.

je test ça et je valide la réponse :p
0
supers03 Messages postés 106 Date d'inscription mardi 6 janvier 2004 Statut Membre Dernière intervention 1 décembre 2008
18 janv. 2008 à 16:53
Après vérification, le problème n'est pas là. En effet, les caractères tel que "?", "%" marchent très bien. par contre :
"+" donne " "
"?" donne "%u20AC"
Je sais pas, mais y'aurai pas moyen de coder la chaine de caractère en UTF8 par exemple, l'envoyer et decoder deriere ? parce que là c'est bizarre de pas pouvoir utiliser ce genre de symbole. Parce que moi j'ai besoin de tout ces symbole, je peu m'amuser à faire mon propre codage mais je vois pas pourquoi ça n'existerai pas, je suis surement pas le seul à vouloir utiliser l'ajax avec un "+" quand même
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
nickydaquick Messages postés 416 Date d'inscription vendredi 31 janvier 2003 Statut Membre Dernière intervention 19 décembre 2013 3
18 janv. 2008 à 16:58
Salut, tu es certain que lorsque tu remplaces le '+' par '%2B' , ton post ne passe pas ? parce que un espace dans un POST ca existe pas mon ami.

je suis heureux de faire partie d'une grande famille ...!
0
supers03 Messages postés 106 Date d'inscription mardi 6 janvier 2004 Statut Membre Dernière intervention 1 décembre 2008
19 janv. 2008 à 11:42
    nicky :
-j'envoi "+", et coté PHP je recupere le POST est c'est un espace " "
-j'envoi "%2B", et coté PHP je recupere "%2B"
... donc je veu bien que ça n'existe pas mais ça doit convertir tout seul... du coup je comprend plus rien

petole : excellente comme fonction, j'encode, j'envoi, le PHP garde ça en %2B je decode dans la fonction de retour en javascript

Merci à tout les deux ^_^
0
nickydaquick Messages postés 416 Date d'inscription vendredi 31 janvier 2003 Statut Membre Dernière intervention 19 décembre 2013 3
19 janv. 2008 à 19:32
Salut,
je doute que encodeURIComponent() fonctionne correctement avec internet explorer (meme Opera). A force de chercher un moyen trop facile tu risques de t'envenimer l'existence. Mais du courage le frere.

je suis heureux de faire partie d'une grande famille ...!
0
nickydaquick Messages postés 416 Date d'inscription vendredi 31 janvier 2003 Statut Membre Dernière intervention 19 décembre 2013 3
19 janv. 2008 à 19:45
Salut,
voici les caracteres non pris en charge par : encodeURIComponent()
le tilde  =    ~
le point d'exclamation = !
le signe de multiplication = *
la parenthese ouvrante = (
la parenthese fermante = )
l'apostrophe =   ' (single quote)

en ce qui concerne l'apostrophe et le tilde, bon courage.
le reste est OK.

je suis heureux de faire partie d'une grande famille ...!
0
DieMaster Messages postés 3 Date d'inscription vendredi 8 octobre 2004 Statut Membre Dernière intervention 11 février 2008
11 févr. 2008 à 17:39
Personnelement j'utilise : " valeur = escape(valeur).replace(/\+/g,'%2B'); " & ca passe très bien, je n'ai pas encore eu de problemes.

[Die_Master]
0
Rejoignez-nous