Bonjour à tous,
Je développe actuellement une petite application en AJAX / PHP.
Mon souci provient du passage des données du client vers le serveur pendant lequel le caractère + d'une chaine passée en post disparait.
En fait, je sérialise le contenu de ma page dans une seule grosse chaine de caractères avec des marqueurs, et je l'envoie en mode post vers mon serveur pour être traitée en PHP avec les explode qui vont bien.
Sur le serveur, je constate que le + a disparu et j'ai beau tenter d'échapper le + avant envoi dans le Javascript client, jamais il n'apparait sur le serveur. Ce n'est pas un problème de charset car tous les caractères accentués passent sans souci, et j'ai fait tous les tests possibles de conversion à l'envoi et à la reception de la donnée.
C'est en revoyant la ligne qui prépare le send AJAX:
que j'ai mis le doigt sur le phénomène "URL" avec le mot "urlencoded". J'ai donc remplacé le + dans ma variable par "%2B" et je retrouve mon + côté serveur.
Code : Sélectionner tout - Visualiser dans une fenêtre à part xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded; charset=windows-1252");
Ma question est : Existe-t-il un moyen propre de gérer ce cas de figure ? J'imagine qu'il y a d'autre caractères spéciaux pour url... comment les passer correctement au serveur ?
Merci d'avance pour votre aide précieuse
Partager