Récupérer variable POST en AJAX

Bonjour,

J'ai un problème pour récupérer mes données en POST en AJAX.

Voici ma fonction ajax :
function requestPOST (url,cadre) 
{

	var XHR = null;

	if(window.XMLHttpRequest) // Firefox
		XHR = new XMLHttpRequest();
	else if(window.ActiveXObject) // Internet Explorer
		XHR = new ActiveXObject("Microsoft.XMLHTTP");
	else 
	{ // XMLHttpRequest non supporté par le navigateur
		alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
		return;
	}
	 // envoie de la requête, methode GET et de l'url
	XHR.open("POST",url, true);

	// on guette les changements d'état de l'objet
	XHR.onreadystatechange = function attente()
	{

		// l'état est à 4, requête reçu !
		if(XHR.readyState == 4)     
		{
			// ecriture de la réponse
			document.getElementById(cadre).innerHTML = XHR.responseText;
		}
	}
	var namevalue=encodeURIComponent(document.getElementById("nom").value);
	var prenomvalue=encodeURIComponent(document.getElementById("prenom").value);
	var dateNaissvalue=encodeURIComponent(document.getElementById("dateNaiss").value);
	var parameters="nom="+namevalue+"&prenom="+prenomvalue+"&dateNaiss="+dateNaissvalue;

	
	XHR.send(parameters); // le travail est terminé
	return;
}


Mon formulaire :
	echo "<form method ='POST' action=\"javascript:requestPOST('include/fonctions.php','left');\"><TABLE>
	<TR><td>Nom : </td><td><input type='text' name='nom' id='nom' /></td></TR>
	<TR><td>Prénom : </td><td><input type='text' name='prenom' id='prenom' /></td></TR>
	<TR><td>Date de naissance : </td><td><input type='text' name='dateNaiss' id='dateNaiss' /></td></TR>
	<TR><br /><input type='submit' name='ajouterClient' value='Ajouter'/></TR>
	</TABLE></form>";


Et mon fichier fonctions.php :
if(isset($_POST['nom']))
	echo "ca marche !";


Lorsque que je fais un alert des parameters dans la fonction JS, ca m'affiche bien les paramètres, mais pas moyen de les récupérer en POST.

Quelqu'un voit l'erreur ? ^^
Merci !

7 réponses

  • Votes
  • Date
  • Date décroissante
  1. je ne savais pas qu'on pouvais utiliser XHR. tout court au lieu de xhr_object.

    sinon pour ton problème met
    xhr_object.setRequestHeader("Content-type", "application/x-www-form-urlencoded");

    avant XHR.send
    1. "je ne savais pas qu'on pouvais utiliser XHR. tout court au lieu de xhr_object"

      xhr_object étant une variable, tu peux l'appeller comme tu veux ...
    2. ah ouai j'suis beteeeeeee , on va dire que j'ai rien dit :p
  2. autre probleme il faut un ; quelque par :
    XHR.onreadystatechange = function attente()
    {

    // l'état est à 4, requête reçu !
    if(XHR.readyState == 4)
    {
    // ecriture de la réponse
    document.getElementById(cadre).innerHTML = XHR.responseText;
    }
    }; <---------<------<----- ici
    1. en plus losque l'on appele une fonction comm ca :
      XHR.onreadystatechange = function attente()
      	{

      il est plus preferable d'ecrire
      XHR.onreadystatechange = function {

      : pas de nom ni de parrantheses ();
    2. dsl je me tromper c'est :
      XHR.onreadystatechange = function() {

      mais pas de nom
  3. Merci à naruto ca a marché nikel !
    Merci beaucoup aux autres qui ont répondu également, mon problème est résolu.
    1. c'est quoi se truc en php c'est pourquoi fait cette fonction
      1. 1. ceci n'est pas du php mais du javascript et plus particulierement une thecnique qui d'appele le AJAX (google est ton amis).
        2. cette fonction permet de recupere des données qui sont traité par la page appler par se script
        voila
      2. mais elle appele des fichier .php
      3. Vive les fautes d'orthographe !
      4. ouais je sais mais je tape vite j'ai pas le temps de me relire
    2. Sauf erreur de ma part, il faut faire un XHR.send(null) après avoir envoyé tes paramètres.
      1. non car il est avec la methode POST et
        xhr.send(null);
        c'est lorsque l'on et en methode GET -> car on envoit aucun parametre
    3. sinon, tu peux faire :

      var post = <?php
      echo $_POST['post'];
      ?>
      1. pourquoi n m'a mis -1 ? ...

        ce code fonctionne et peut être utilisé puisqu'il utilise du PHP...