Ajax, xhr.send() et caracteres speciaux.

Résolu/Fermé
Drclown Messages postés 15 Date d'inscription jeudi 1 mars 2012 Statut Membre Dernière intervention 9 mars 2012 - 7 mars 2012 à 11:32
AssassinTourist Messages postés 5709 Date d'inscription lundi 16 janvier 2012 Statut Contributeur Dernière intervention 29 février 2024 - 7 mars 2012 à 15:02
Bonjour, j'ai un problème lorsque je veux envoyer une saisie en AJAX avec send(). Pour info j'envoie les données par POST comme ceci:
xhr.send("donnees="+donnees);

Le problème est que lorsque je tape un & dans la saisie et que j'exécute, send() est bloqué par ce & qui l'interprète comme ça:
xhr.send("donnees=&");

Comment je peux faire pour que les & soit envoyer dans ma page ajax.php ?




A voir également:

4 réponses

AssassinTourist Messages postés 5709 Date d'inscription lundi 16 janvier 2012 Statut Contributeur Dernière intervention 29 février 2024 1 310
7 mars 2012 à 11:36
Bonjour,
Les backslasher peut-être.
1
Drclown Messages postés 15 Date d'inscription jeudi 1 mars 2012 Statut Membre Dernière intervention 9 mars 2012
7 mars 2012 à 11:42
Comment ça? avec des antislashs?
0
AssassinTourist Messages postés 5709 Date d'inscription lundi 16 janvier 2012 Statut Contributeur Dernière intervention 29 février 2024 1 310
7 mars 2012 à 11:49
Oui. Faire une sorte de regex pour rajouter des antislashs devant des caractères spéciaux.
0
Drclown Messages postés 15 Date d'inscription jeudi 1 mars 2012 Statut Membre Dernière intervention 9 mars 2012
Modifié par Drclown le 7/03/2012 à 11:49
Merci Assassintourist en mettant un antislash le & est interprété comme une chaine!
Le code
xhr.send("donnees=/&");
me renvoi:
&
J'ai plus qu'a faire une regex et c'est bon =D
0
Drclown Messages postés 15 Date d'inscription jeudi 1 mars 2012 Statut Membre Dernière intervention 9 mars 2012
7 mars 2012 à 13:30
Désolé mais faite ça ne marche pas je mettais tromper l'antislash avant le & bloque toujours la méthode send()...
D'autre idées peu être?
0
AssassinTourist Messages postés 5709 Date d'inscription lundi 16 janvier 2012 Statut Contributeur Dernière intervention 29 février 2024 1 310
Modifié par AssassinTourist le 7/03/2012 à 13:43
Un antislash, c'est \ et non /
Mais je vois ce que tu veux dire, oui... mmh...
0
Drclown Messages postés 15 Date d'inscription jeudi 1 mars 2012 Statut Membre Dernière intervention 9 mars 2012
7 mars 2012 à 13:52
oui erreur de ma part j'ai bien essayé avec un \.
Pour info, ça bloque quand j'envoie le caractère +:
xhr.send("donnees=+");

Mais pas le caractère -:
xhr.send("donnees=-");

Il y a peu être une autre méthode que send()?
0
AssassinTourist Messages postés 5709 Date d'inscription lundi 16 janvier 2012 Statut Contributeur Dernière intervention 29 février 2024 1 310
7 mars 2012 à 14:04
Parce que + est utilisé dans javascript pour concaténer des variables et - bah ce n'est qu'un tiret ou un moins.
0
Drclown Messages postés 15 Date d'inscription jeudi 1 mars 2012 Statut Membre Dernière intervention 9 mars 2012
7 mars 2012 à 14:19
J'ai trouvé la solution '&' est un séparateur dit réservé pour les URL etc... Pour permettre à send() de l'envoyer il faut utiliser la fonction encodeURIComponent() sur la chaine:
donnees = encodeURIComponent(donnees);
xhr.open('POST', 'ajax.php');
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");  
xhr.send("donnees="+donnees);

et la ça marche Youpi!!
0
AssassinTourist Messages postés 5709 Date d'inscription lundi 16 janvier 2012 Statut Contributeur Dernière intervention 29 février 2024 1 310
7 mars 2012 à 15:02
Ok tant mieux =)
0