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

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

Votre réponse

9 réponses

Meilleure réponse
Messages postés
3435
Date d'inscription
lundi 26 décembre 2005
Dernière intervention
14 janvier 2011
- 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é 88 internautes ce mois-ci

Commenter la réponse de PetoleTeam
Messages postés
417
Date d'inscription
vendredi 31 janvier 2003
Dernière intervention
19 décembre 2013
- 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
Messages postés
106
Date d'inscription
mardi 6 janvier 2004
Dernière intervention
1 décembre 2008
- 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
Messages postés
106
Date d'inscription
mardi 6 janvier 2004
Dernière intervention
1 décembre 2008
- 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
Messages postés
417
Date d'inscription
vendredi 31 janvier 2003
Dernière intervention
19 décembre 2013
- 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
Messages postés
106
Date d'inscription
mardi 6 janvier 2004
Dernière intervention
1 décembre 2008
- 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
Messages postés
417
Date d'inscription
vendredi 31 janvier 2003
Dernière intervention
19 décembre 2013
- 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
Messages postés
417
Date d'inscription
vendredi 31 janvier 2003
Dernière intervention
19 décembre 2013
- 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
Messages postés
3
Date d'inscription
vendredi 8 octobre 2004
Dernière intervention
11 février 2008
- 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.