Certain caractère non transmis avec POST [Résolu]

supers03 106 Messages postés mardi 6 janvier 2004Date d'inscription 1 décembre 2008 Dernière intervention - 18 janv. 2008 à 09:41 - Dernière réponse : DieMaster 3 Messages postés vendredi 8 octobre 2004Date d'inscription 11 février 2008 Dernière intervention
- 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
Afficher la suite 

Votre réponse

9 réponses

Meilleure réponse
PetoleTeam 3435 Messages postés lundi 26 décembre 2005Date d'inscription 14 janvier 2011 Dernière intervention - 18 janv. 2008 à 17:08
3
Merci
Bonjour,
voir du coté de encodeURIComponent()
alert( encodeURIComponent('Bonjour+Toi'));
;O)

Merci PetoleTeam 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 84 internautes ce mois-ci

Commenter la réponse de PetoleTeam
nickydaquick 417 Messages postés vendredi 31 janvier 2003Date d'inscription 19 décembre 2013 Dernière intervention - 18 janv. 2008 à 15:47
0
Merci
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 ...!
Commenter la réponse de nickydaquick
supers03 106 Messages postés mardi 6 janvier 2004Date d'inscription 1 décembre 2008 Dernière intervention - 18 janv. 2008 à 16:42
0
Merci
    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
Commenter la réponse de supers03
supers03 106 Messages postés mardi 6 janvier 2004Date d'inscription 1 décembre 2008 Dernière intervention - 18 janv. 2008 à 16:53
0
Merci
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
Commenter la réponse de supers03
nickydaquick 417 Messages postés vendredi 31 janvier 2003Date d'inscription 19 décembre 2013 Dernière intervention - 18 janv. 2008 à 16:58
0
Merci
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 ...!
Commenter la réponse de nickydaquick
supers03 106 Messages postés mardi 6 janvier 2004Date d'inscription 1 décembre 2008 Dernière intervention - 19 janv. 2008 à 11:42
0
Merci
    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 ^_^
Commenter la réponse de supers03
nickydaquick 417 Messages postés vendredi 31 janvier 2003Date d'inscription 19 décembre 2013 Dernière intervention - 19 janv. 2008 à 19:32
0
Merci
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 ...!
Commenter la réponse de nickydaquick
nickydaquick 417 Messages postés vendredi 31 janvier 2003Date d'inscription 19 décembre 2013 Dernière intervention - 19 janv. 2008 à 19:45
0
Merci
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 ...!
Commenter la réponse de nickydaquick
DieMaster 3 Messages postés vendredi 8 octobre 2004Date d'inscription 11 février 2008 Dernière intervention - 11 févr. 2008 à 17:39
0
Merci
Personnelement j'utilise : " valeur = escape(valeur).replace(/\+/g,'%2B'); " & ca passe très bien, je n'ai pas encore eu de problemes.

[Die_Master]
Commenter la réponse de DieMaster

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.