méthode POST avec les caractères '&' et '+' dans une variable
Bonsoir,
J'ai actuellement un souci pour passer des valeurs avec XMLHTTPRequest vers un fichier php.
En bref, les variables qui contiennent plusieurs fois le caractères '&' provoquent une "rupture".
J'utilise la fonction javascript suivante :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| function getXhr(){
var xhr = null;
if(window.XMLHttpRequest) // Firefox et autres
xhr = new XMLHttpRequest();
else if(window.ActiveXObject)
{ // Internet Explorer
try
{
xhr = new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e)
{
xhr = new ActiveXObject("Microsoft.XMLHTTP");
}
}
else
{ // XMLHttpRequest non supporté par le navigateur
alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
xhr = false;
}
return xhr
} |
et j'envoie mes variables de cette manière :
Code:
1 2 3 4
| var xhr = getXhr();
xhr.open("POST", "mon_fichier_php.php",true);
xhr.setRequestHeader('Content-type','application/x-www-form-urlencoded');
xhr.send("ma_variable=toto&tati"); |
Tel que c'est écrit, le script pense que tati est une deuxième variable à envoyer.
J'ai donc utiliser la fonction javascript escape() pour pallier à ce problème mais voilà j'ai ensuite rencontrer un autre problème qui est en fait mon véritable problème.
Lorsque qu'une variable à envoyer contient le caractère '+', mon fichier php récupère ' ' à la place du caractère '+'.
Par exemple pour :
Code:
1 2 3 4
|
var ma_variable = "toto+tati";
xhr.send(escape(ma_variable)); |
mon fichier php récupère :
Code:
1 2 3
|
echo $_POST['ma_variable'];
// affiche 'toto tati' au lieu de 'toto+tati' |
Voilà donc ça pose réellement un problème. Si vous pouvez m'éclaircir s'il vous plait je vous remercie d'avance.