	function sendData(data, page, method, cible)
	{
		/*
		Propriétés
		    * onreadystatechange : Spécifie la fonction à appeler lorsque la propriété readyState varie. lecture/écriture. (Cf. section 3 pour les valeurs)
		    * readyState : Représente l'état d'avancement de la requête. lecture seule.
		    * responseText : Chaîne de caractères contenant la réponse à la requête. lecture seule.
		    * responseXML : Objet XML contenant la réponse à la requête. lecture seule.
		    * status : Représente le code HTTP retourné par la requête. lecture seule. (Cf. section 3 pour les valeurs)
		Méthodes
		    * abort() : Annule la requête courante.
		    * getAllResponseHeaders() : Retourne les noms et les valeurs de tous les en-têtes HTTP sous forme d'une chaîne.
		    * getResponseHeader(headerName) : Récupère la valeur d'un certain en-tête HTTP (headerName) sous forme d'une chaîne.
		    * open(method, url[, asynchrone[, user[, password]]]) : Initialise une requête en spécifiant la méthode (method), l'URL (url), si le mode est asynchrone (asyncFlag vaut true ou false) et en indiquant d'éventuelles informations d'identification (user et password).
		    * send(data) : Envoie la requête HTTP au serveur en transmettant éventuellement des données (data doit alors être différent de null) sous forme d'une « postable string » (je suis preneur pour une traduction) ou sous forme d'un objet DOM.
		    * setTimeouts(timeout) : Spécifie la durée maximale (timeout) accordée à une requête pour quelle s'effectue complètement.
		    * setRequestHeader(headerName, headerValue) : Spécifie un en-tête HTTP (headerName et headerValue) à envoyer avec la requête
		*/

		if(window.XMLHttpRequest) // Firefox 
			XhrObj = new XMLHttpRequest(); 
		else if(window.ActiveXObject) // Internet Explorer 
			XhrObj = new ActiveXObject("Microsoft.XMLHTTP"); 
		else {
			alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest.\nVeuillez contacter le support technique."); 
			return; 
		} 

		//définition de l'endroit d'affichage:
		var endroit_cible = document.getElementById(cible);
		var etat_transaction = document.getElementById('etat_transaction');
		
		//si on envoie par la méthode GET:
		if(method == "GET")
		{
			if(data == 'null')
			{
				//ouvertur du fichier sélectionné:
				XhrObj.open("GET", page);
			}
			else
			{
				//Ouverture du fichier testGet.php en methode GET
				XhrObj.open("GET", page+"?"+data, true);

			}
		}
		else if(method == "POST")
		{
			//Ouverture du fichier testPost.php en methode POST
			XhrObj.open("POST", page, true);
		}
	
		//Ok pour la page cible
		XhrObj.onreadystatechange = function() 
		{
			if (XhrObj.readyState < 4) {
				etat_transaction.innerHTML = "Interrogation du server en cours. Waiting for server's response.";
			}
			if (XhrObj.readyState == 4 && XhrObj.status != 200) {
				etat_transaction.innerHTML = "Les données reçues sont incomplètes ou erronnées<br\>Code Statut : "+ XhrObj.status;
			}
			if (XhrObj.readyState == 4 && XhrObj.status == 200) {
				endroit_cible.innerHTML = XhrObj.responseText;
				etat_transaction.innerHTML = "";
			}

			/*
			0 (uninitialized)	non initialisé
			1 (loading)	début du transfert des données
			2 (loaded)	données transférées
			3 (interactive)	les données reçues sont accssibles en partie
			4 (complete)	les données sont complètement accessibles
			*/

			/*
			100	Continue
			101	Switching protocols
			200	OK
			201	Created
			202	Accepted
			203	Non-Authoritative Information
			204	No Content
			205	Reset Content
			206	Partial Content
			300	Multiple Choices
			301	Moved Permanently
			302	Found
			303	See Other
			304	Not Modified
			305	Use Proxy
			307	Temporary Redirect
			400	Bad Request
			401	Unauthorized
			402	Payment Required
			403	Forbidden
			404	Not Found
			405	Method Not Allowed
			406	Not Acceptable
			407	Proxy Authentication Required
			408	Request Timeout
			409	Conflict
			410	Gone
			411	Length Required
			412	Precondition Failed
			413	Request Entity Too Large
			414	Request-URI Too Long
			415	Unsupported Media Type
			416	Requested Range Not Suitable
			417	Expectation Failed
			500	Internal Server Error
			501	Not Implemented
			502	Bad Gateway
			503	Service Unavailable
			504	Gateway Timeout
			505	HTTP Version Not Supported
			*/
		}	
	
		if(method == "GET")
		{
			XhrObj.send(null);
		}
		else if(method == "POST")
		{
			XhrObj.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
			XhrObj.send(data);
		}
	}
	
	// Permet de récupérer les données d'un fichier via les XmlHttpRequest:
	function getFile(page,cible)
	{
		sendData('null', page, 'GET', cible)
	}
