Ajax, xhr.send() et caracteres speciaux.

Résolu
Drclown Messages postés 15 Date d'inscription   Statut Membre Dernière intervention   -  
AssassinTourist Messages postés 6029 Date d'inscription   Statut Contributeur Dernière intervention   -
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 6029 Date d'inscription   Statut Contributeur Dernière intervention   1 312
 
Bonjour,
Les backslasher peut-être.
1
Drclown Messages postés 15 Date d'inscription   Statut Membre Dernière intervention  
 
Comment ça? avec des antislashs?
0
AssassinTourist Messages postés 6029 Date d'inscription   Statut Contributeur Dernière intervention   1 312
 
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   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention  
 
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 6029 Date d'inscription   Statut Contributeur Dernière intervention   1 312
 
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   Statut Membre Dernière intervention  
 
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 6029 Date d'inscription   Statut Contributeur Dernière intervention   1 312
 
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   Statut Membre Dernière intervention  
 
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 6029 Date d'inscription   Statut Contributeur Dernière intervention   1 312
 
Ok tant mieux =)
0