Partage
  • Partager sur Facebook
  • Partager sur Twitter

[AJAX]récupérer valeur post php

    9 mai 2017 à 10:24:47

    Bonjour,

    j'ai une requête ajax (je débute en ajax) qui envoi une donnée au php avec la méthode post, mais quand j'essaie d'afficher la valeur en php, rien ne se passe, donc je fais une vérification avec var_dump et le var_dump retourne "Notice: Undefined index: id"

    Voici mon code

    JS

    $.ajax
    ({
    	type: "post",
    	url: "../controllers/index.controller.php",
    	data:
    	{
    		"id" : 7
    	},
    	success: function(data)
    	{
    		if (data === "Salut")
    		{
    			console.log("Salut");
    		}
    		else
    		{
    			console.log("Coucou");
    		}
    	}
    });

    PHP

    var_dump($_POST["id"]);
    exit();
    	
    if ( !empty($_POST["id"]) )
    {
    	echo "Salut";
    }
    else
    {
    	echo "Coucou";
    }

    Est-ce quelqu'un peut m'aider ?

    Merci.

    • Partager sur Facebook
    • Partager sur Twitter
      9 mai 2017 à 11:09:15

      Bonjour:

      1) fait un var_dump de $_POST, ca serra plus parlant que cibler directement ton élément espéré/

      2) essai avec:

      $.ajax
      ({
          type: "post",
          url: "../controllers/index.controller.php",
          data:
          {
              id : 7
          },
          success: function(data)
          {
              if (data === "Salut")
              {
                  console.log("Salut");
              }
              else
              {
                  console.log("Coucou");
              }
          }
      });



      • Partager sur Facebook
      • Partager sur Twitter
      Un petit +1 si je vous ai aidé est toujours appréciable :).
        9 mai 2017 à 13:35:55

        Merci pour ta réponse. J'ai essayé de faire ce que tu propose, ça ne marche. Le var_dump retourne ceci :

        <small>C:\wamp\www\mon-site\controllers\index.controller.php:7:</small>
        array (size=0)
          empty
        • Partager sur Facebook
        • Partager sur Twitter
          9 mai 2017 à 13:43:38

          Salut as-tu essayé avec method au lieu de type ?
          • Partager sur Facebook
          • Partager sur Twitter
            9 mai 2017 à 13:47:16

            Je viens d'essayer, ça ne change rien.
            • Partager sur Facebook
            • Partager sur Twitter
              9 mai 2017 à 15:50:53

              Et si tu fais data : { id : 7 } ça dit quoi ?
              • Partager sur Facebook
              • Partager sur Twitter
                9 mai 2017 à 18:33:05

                La documentation de JQuery indique de passer les paramètres de cette façon.

                • Partager sur Facebook
                • Partager sur Twitter
                  9 mai 2017 à 18:38:46

                  C'est ce que j'ai fait, sauf que je fais des retours à la ligne.

                  data : { id : 7 }

                  Même chose que

                  data:
                  {
                      id : 7
                  }

                  Je ne pense pas que le problème vient des retours à la ligne.

                  Est-ce qu'une donnée javascript envoyée à php en ajax doit obligarement être une donnée récupérée du html ou bien ça peut être une donnée créée en javascript ?

                  -
                  Edité par me_moi 9 mai 2017 à 18:59:06

                  • Partager sur Facebook
                  • Partager sur Twitter
                    9 mai 2017 à 21:12:23

                    Excuse moi je n'ai pas fait attention.

                    Oui bien sur ça peut être une donnée créée en JS.

                    Et si tu essaye ça, ça donne quoi ?

                    $.ajax({
                        url : "../controllers/index.controller.php",
                        type : "POST",
                        data : "id=7",
                        dataType: "html",
                        success: function(data) {                                       
                            //En cas de succès ici tu fais ce que tu veux
                        }
                    });

                    J'utilise Ajax de cette manière dans mes scripts moi et ça fonctionne ;)

                    • Partager sur Facebook
                    • Partager sur Twitter
                      10 mai 2017 à 12:42:48

                      Merci pour ta réponse. 

                      Même pour une donnée créée en javascript, est-ce que

                      type : "post"

                      doit forcément correspondre à une donnée d'un formulaire ou non ? 

                      Merci. 

                      • Partager sur Facebook
                      • Partager sur Twitter
                        10 mai 2017 à 15:08:29

                        Non par forcément.

                        Par exemple si tu fait var test = 7, la variable test sera transmise en POST et elle ne vient pas d'un formulaire ;)

                        • Partager sur Facebook
                        • Partager sur Twitter
                          12 mai 2017 à 10:33:48

                          le probleme vient peut-être du header Content-Type. Verifie que dans l'historique que le Content-Type vaut application/x-www-form-urlencoded ou multipart/form-data. Il me semble que le $_POST n'est rempli qu'à ce moment là. 

                          Si tu veux voir les données brutes que recoi PHP, tu peux lire le flux php://input avec des fonctions d'entree / sortie (ex file_get_contents, fopen, etc.)

                          • Partager sur Facebook
                          • Partager sur Twitter
                            17 mai 2017 à 10:53:54

                            Merci pour ta réponse,

                            j'ai regardé dans Request Headers du fichier JavaScript, il n y a pas 

                            Content-Type:
                            application/x-www-form-urlencoded;
                            J'ai essayé en copiant collant d'un autre projet où ça marche et en remplaçant les valeurs, ça ne marche pas non plus.

                            -
                            Edité par me_moi 17 mai 2017 à 10:54:59

                            • Partager sur Facebook
                            • Partager sur Twitter
                              18 mai 2017 à 19:00:15

                              Dans ma requête ajax, j'ai mis

                              type: "post"

                              et pourtant, dans l'onglet NETWORK, dans l'onglet HEADERS, dans General, ça affiche

                              Request Method:
                              GET

                              Pourquoi ? Est-ce que quelqu'un peut m'aider ? Je n'arrive pas à trouver et je débute en ajax.

                              Merci pour votre aide.

                              • Partager sur Facebook
                              • Partager sur Twitter
                                28 mai 2017 à 0:33:22

                                Bonsoir,

                                j'ai réessayé et ça ne marche toujours pas, alors que dans un autre code, ça marche.

                                JavaScript

                                "use strict"; // Mode strict du JavaScript
                                
                                /*************************************************************************************************/
                                /* ****************************************** DONNEES ****************************************** */
                                /*************************************************************************************************/
                                
                                
                                
                                /*************************************************************************************************/
                                /* ***************************************** FONCTIONS ***************************************** */
                                /*************************************************************************************************/
                                
                                function checkUsername()
                                {
                                	$.ajax
                                	({
                                		type: "post",
                                		url: "../controllers/login.controller.php",
                                		data:
                                		{
                                			"username_check": $("#username").val()
                                		},
                                		success: function(data)
                                		{
                                			if (data === "success")
                                			{
                                				$("#output_checkuser").css("color", "green").html("Le pseudo est valide");
                                			}
                                			else
                                			{
                                				$("#output_checkuser").css("color", "red").html(data)
                                			}
                                		}
                                	});
                                }
                                
                                function checkPassword()
                                {
                                	$.ajax
                                	({
                                		type: "post",
                                		url: "../controllers/login.controller.php",
                                		data:
                                		{
                                			"password_check": $("#password").val()
                                		},
                                		success: function(data)
                                		{
                                			if (data === "success")
                                			{
                                				$("#output_password").css("color", "green").html("Le mot de passe est valide");
                                			}
                                			else
                                			{
                                				$("#output_password").css("color", "red").html(data);
                                			}
                                		}
                                	});
                                }
                                
                                
                                /*************************************************************************************************/
                                /* ************************************** CODE PRINCIPAL *************************************** */
                                /*************************************************************************************************/
                                
                                document.addEventListener("DOMContentLoaded", function()
                                {
                                	$("#username").keyup(function()
                                	{
                                		// On vérifie si le pseudo est valide.
                                		checkUsername();
                                	});
                                	
                                	$("#password").keyup(function()
                                	{
                                		// On vérifie si le mot de passe est valide.
                                		checkPassword();
                                	});
                                });

                                PHP

                                // Vérification du pseudo
                                if ( !empty($_POST["username_check"]) )
                                {
                                	$username = $_POST["username_check"];
                                	$username = preg_replace("#[^a-z0-9]#i", "", $username);
                                	
                                	if ( iconv_strlen($username) < 6 )
                                	{
                                		echo "Trop court (6 Caractères minimum)";
                                		exit();
                                	}
                                	else
                                	{
                                		echo "success";
                                		exit();
                                	}
                                }
                                
                                // Vérification du mot de passe
                                if ( !empty($_POST["password_check"]) )
                                {
                                	$password = $_POST["password_check"];
                                	
                                	if ( iconv_strlen($password) < 6 )
                                	{
                                		echo "Trop court (6 Caractères minimum)";
                                		exit();
                                	}
                                	else
                                	{
                                		echo "success";
                                		exit();
                                	}
                                }

                                Pourquoi dans ce code, ça marche et dans le code que j'ai posté dans le premier message, ça ne marche pas ?

                                Je suis débutant en ajax. Est-ce que quelqu'un peut m'aider ?

                                Merci.

                                • Partager sur Facebook
                                • Partager sur Twitter
                                  10 juin 2017 à 22:49:22

                                  me_moi a écrit:

                                  Merci pour ta réponse,

                                  j'ai regardé dans Request Headers du fichier JavaScript, il n y a pas 

                                  Content-Type:
                                  application/x-www-form-urlencoded;
                                  J'ai essayé en copiant collant d'un autre projet où ça marche et en remplaçant les valeurs, ça ne marche pas non plus.

                                  -
                                  Edité par me_moi 17 mai 2017 à 10:54:59


                                  Du coup le Content-Type n'est pas bon, non ?
                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    10 juin 2017 à 23:51:36

                                    me_moi a écrit:

                                    Merci pour ta réponse,

                                    j'ai regardé dans Request Headers du fichier JavaScript, il n y a pas 

                                    Content-Type:
                                    application/x-www-form-urlencoded;
                                    J'ai essayé en copiant collant d'un autre projet où ça marche et en remplaçant les valeurs, ça ne marche pas non plus.

                                    -
                                    Edité par me_moi 17 mai 2017 à 10:54:59



                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      14 juillet 2017 à 11:08:31

                                      Pourquoi ne pas utiliser $.post ?
                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                        14 juillet 2017 à 12:01:14

                                        Je ne connais pas le jquery. C'est quoi la différence entre $.ajax et $.post ?
                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                          15 juillet 2017 à 9:18:25

                                          Pas besoin de préciser la méthode puisque ce sera en POST uniquement, la doc si besoin: https://api.jquery.com/jquery.post/
                                          • Partager sur Facebook
                                          • Partager sur Twitter

                                          [AJAX]récupérer valeur post php

                                          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                          • Editeur
                                          • Markdown