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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
 
var ma_variable = "toto+tati";
xhr.send(escape(ma_variable));
mon fichier php récupère :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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.