IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

[AJAX] Récupérer $_POST actualisé par AJAX


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Février 2008
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 19
    Par défaut [AJAX] Récupérer $_POST actualisé par AJAX
    Bonjour à tous

    Alors voila mon probleme, j'ai dans un formulaire, utilisé AJAX pour actualiser une seconde liste deroulante à partir d'une premiere, puis actualiser une zone de texte à partir de la deuxieme... Tout ça marche bien (que sur firefox d'ailleurs je sais pas si c'est normal).

    et maintenant, dans ma page de vérification du formulaire, je pensais pouvoir récuperer normalement les valeurs actualisées (notament la selection sur la deuxieme liste) en $_POST, mais PHP ne la trouve pas. C'est comme si le submit n'envoyait que les données présentes au premier affichage de la page, et donc que les parties actualisées par AJAX n'en font pas partie.

    il ne rentre donc pas dans la condition suivante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if(isset($_POST['codeRef']))
    {
    }
    Comment je peux faire ? si vous voulez une autre partie du code demandez le moi.

    Merci

  2. #2
    Membre éclairé Avatar de tavarlindar
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    262
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 262
    Par défaut
    Bonjour,

    Je suis en plein dans l'étude d'ajax ...

    Pourrais-tu nous mettre faire part de ton code ?

  3. #3
    Membre averti
    Inscrit en
    Février 2008
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 19
    Par défaut
    oui bien sûr.

    Pour simplifier le code et ne pas trop surcharger la discussion, j'ai retiré certains éléments qui peuvent faire paraitre ce script défaillant mais il marche .

    Alors voici le code HTML:
    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
    24
     
    <table align="center" border="0">
    <tr>
          <form id="commande" name="commande" method="POST" enctype="multipart/form-data" action="vcommande.php">
    </tr>
    <tr>
          <td width="150" class="form">Fournisseur:</td>
          <td><!-- Jai simplifié, normalement la liste va chercher les fournisseurs dans la base de données -->
          <select name="idFournisseur" align="center" onChange="javascript:getRefs();"> 
    	<option value= "0" selected>- - - - - - - -</option><? 
    	<option value= "1">Four1</option>
    	<option value= "2">Four2</option>				
          </select>
          </td>
    </tr>
    <tr id="refs">
         <!--Cest ce tr qui sera actualisé par ajax pour afficher la liste des references en fonction du fournisseur	-->
         <td width="150" class="form">Ref produit:</td>
         <td>
              <select name="codeRef">
                   <option value="0">- - - - - - - -</option>
              </select>
         </td>
    </tr>
    La fonction AJAX getRefs() appelée par le onChange de la liste:
    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
     
    function getRefs() 
    {
    creerRequete();	/* initalise la variable globale "requete" */
     
    var monForm = document.getElementById('commande');	
    var fournisseurs = monForm.idFournisseur;	/* On récupère la valeur sélectionnée dans la liste déroulante */
    var four = "";
     
    for (i = 0; i < fournisseurs.options.length; i++)
    {
         if (fournisseurs.options[i].selected) 
         {
              four += fournisseurs.options[i].value;
         }
    }
     
    var url = 'references.php?four='+four;	/* On définie l'url à appeller en passant cette valeur */
    requete.open('GET', url, true);    /* Préparation d'une requête asynchrone de type GET */
     
    requete.onreadystatechange = function() 
    {
         if(requete.readyState == 4)		/* 4 signifie que l'état est "complete" */
         {
              if(requete.status == 200)	/* code HTTP si tout est ok */
              {
                   document.getElementById('refs').innerHTML = requete.responseText;	/* Traitement de la réponse, on met à jour notre tr via son id*/
              }
         }
    };
     
    requete.send(null);		/* Effectue la requête */
    }
    La page references.php qui va traiter le resultat d'AJAX

    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
     
    $four = isset($_GET['four']) ? $_GET['four'] : false;
     
    if($four != false)
    {	?>
    <td width="150" class="form">Ref produit:</td>
    <td>	
         <select name="codeRef" id="codeRef" align="center" onChange="javascript:getLibArticle();">
         <? 
         $req = "ma requete";
         $req2 = mysql_query($req)or die('Erreur SQL !<br>'.$req.'<br>'.mysql_error());
     
         while($donnees = mysql_fetch_array($req2))	// On parcours toutes les ref 
         {
              echo '<option value='.$donnees['codeRef'].'>'.$donnees['codeRef'].'</option>';
         }
    ?>
         </select>
    </td>
    <?  }

  4. #4
    Membre émérite Avatar de Herode
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2005
    Messages
    825
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2005
    Messages : 825
    Par défaut
    Pour récupérer quelque chose dans $_POST côté serveur, il faut avoir utilié la méthode "post" côté client.
    Or, si je lis bien ton code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    requete.open('GET', url, true);    /* Préparation d'une requête asynchrone de type GET */

  5. #5
    Membre averti
    Inscrit en
    Février 2008
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 19
    Par défaut
    Oui tu as raison mais le GET que tu vois là sert pour transmettre la variable à ma page references.php, qui elle même est alors inclue dans le formulaire apres actualisation d'AJAX.

    Dans references.php, je récupère bien un GET pour avoir le resultat de la requete XMLHttpRequest:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $four = isset($_GET['four']) ? $_GET['four'] : false;
    Par contre j'ai bien un POST pour soumettre mon formulaire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <form id="commande" name="commande" method="POST" enctype="multipart/form-data" action="vcommande.php">
    Cependant, j'ai quand même essayé de récuperer un $_GET apres validation du formulaire, et effectivement il n'existe pas non plus.

  6. #6
    Membre émérite Avatar de Herode
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2005
    Messages
    825
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2005
    Messages : 825
    Par défaut
    Ha oui, autant pour moi, j'avais lu trop vite...
    La déclaration de ton formulaire semble incorrecte : balise fermante </form> absente et de toutes façons, il faudrait la placer dans le <tr> où la balise ouvrante a été déclarée. Si tu déclares ta balise <form> correctement avant et après la <table>, ça pourrait aller mieux.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AJAX] récupérer du XML par Ajax.
    Par seb_714 dans le forum AJAX
    Réponses: 2
    Dernier message: 24/07/2012, 13h57
  2. récupérer variable url par ajax
    Par jules_diedhiou dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 24/01/2012, 13h00
  3. [AJAX] Récupérer noeud généré par ajax
    Par pluche52 dans le forum AJAX
    Réponses: 5
    Dernier message: 10/01/2011, 18h11
  4. [AJAX] Executer Javascript chargé par Ajax
    Par Sylvain71 dans le forum Général JavaScript
    Réponses: 16
    Dernier message: 13/12/2007, 23h14
  5. [AJAX] récupérer données transmises par php
    Par Maryy dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 07/01/2007, 16h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo