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

jQuery Discussion :

Submit et fonction


Sujet :

jQuery

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 87
    Par défaut Submit et fonction
    Bonjour,

    Voilà j'ai un petit souci pour envoyer un formulaire via une fonction.
    Dans un premier temps ma fonction exécute un traitement php (qui génère un xml avec toute les données du formulaire) puis ensuite elle doit envoyer un message qui confirme ou non que le traitement a bien été exécuté.
    voici mon code :
    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
     
    <script type='text/JavaScript'>
    function setxml(ET){
    	$.ajax(			
    		type: "POST",
    		url: "setXml.php?Id_ET="+ET,
    		success:function(data)
    		{
    		   if(data==0)
    		   {
    			 alert('Les paramètres ont bien été envoyés');
    		   }
    			else
    		   {
    			 alert('Une erreur est survenue, les paramètres n\'ont pas été envoyés');
    		   }
    		}
    	);
    	document.Form2.submit();
    }
    </script>
    <form name="Form2" method="post">
    <table>
        <tr>
          <td class="blockContent">Numéro d'usine de l'ET</td>
          <td class="blockContent"><input type="text" name="InputET" value="<?php echo $ET; ?>" />
        </tr>
        <tr>
          <td class="blockContent">ID Agent</td>
          <td class="blockContent"><input type="text" name="InputIdAgent" value="<?php echo $Id_Agent; ?>" />
        </tr>
        <tr>
          <td class="blockContent">Ville</td>
          <td class="blockContent">
            <input type="text" name="InputVille" value="<?php echo $Ville; ?>" /></td>
        </tr>
        <tr>
          <td class="blockContent">CP</td>
          <td class="blockContent">
            <input type="text" name="InputCP"  value="<?php echo((float)$CP); ?>" /></td>
        </tr>
        <tr>
          <td class="blockContent">Mode</td>
          <td class="blockContent">
            <input type="text" name="InputMode" value="<?php echo $Mode; ?>" /></td>
        </tr>
        <tr height="65px">
          <td class="blockContent" colspan="4" align="center">
            <a href="#" onclick="javascript:setxml('<?php echo $Id_ET; ?>');">envoyer</a></td>
        </tr>
    </table>
    </form>
    setXml.php
    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
     
    <?php
      $dom = new DomDocument;
      $dom->load('xml/test2.xml'); 
     
            $listeCA=$dom->getElementsByTagName('ET');
            foreach($listeET as $ET)
            $CA->nodeValue=$_POST['InputET'];
            
            $listeIdAgent=$dom->getElementsByTagName('Id_Agent');
            foreach($listeIdAgent as $idAgent)
            $idAgent->nodeValue=$_POST['InputIdAgent'];
     
            $listeVille=$dom->getElementsByTagName('Ville');
            foreach($listeVille as $ville)
            $ville->nodeValue=$_POST['InputVille'];
     
            $listeVille=$dom->getElementsByTagName('CP');
            foreach($listeCP as $CP)
            $ville->nodeValue=$_POST['InputCP'];
     
            $listeVille=$dom->getElementsByTagName('Mode');
            foreach($listeMode as $Mode)
            $ville->nodeValue=$_POST['InputMode'];
     
            $dom->save('xml/$_POST['ET'].xml');
    ?>
    Je souhaite en fait éviter tout rafraichissement. Et actuellement lorsque je clique sur "Envoyer" mon fichier xml est bien crée, j'ai bien le message qui confirme que le traitement a bien été effectué, mais les balises de mon xml sont vides comme si rien n'était passé par le POST.
    A noté que ma fonction setXml.php fonctionne si je ne passe pas par la fonction javascript pour l'éxécuter donc le souci viens bien du javascript.

    merci pour vos réponse

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    59
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 59
    Par défaut
    A priori tant que tu utiliseras le submit à la fin de ton javascript, la page sera rechargée ... et si tu ne réinjecte pas les valeurs de tes champs, elles disparaitront ... mais ce n'est pas ce que tu veux puisque tu ne veux pas recharger la page.

    As tu réellement besoin de valider le formulaire?
    Si oui, tu dois faire le submit et réinjecter les valeur.
    Si non, ta fonction javascript fonctionnera très bien sans valider le formulaire, non?

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 87
    Par défaut
    Dsl pour la réponse tardive j'étais absent.

    Donc pour te répondre oui j'en ai réellement besoin de la confirmation.

    Mais pour réinjecter les valeurs je voit pas vraiment comment faire du coup...

  4. #4
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Ton appel AJAX est asynchrone, donc le script n'attend pas la réponse du serveur pour continuer son exécution, ce qui fait que l'appel AJAX et la soumission du formulaire se font en même temps.
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 87
    Par défaut
    Merci de vos explication.

    Sinon j'ai un début de solution je crois, voilà mes modifs :

    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
     
    $(function(){
    	$("Form2").submit(function(){
    		$.ajax(	
    			{
    				type: "POST",
    				url: "setXml.php?Id_ET="+ET,
    				success:function(data)
    				{
    				   if(data==0)
    				   {
    					 alert('Les paramètres ont bien été envoyés');
    				   }
    					else
    				   {
    					 alert('Une erreur est survenue, les paramètres n\'ont pas été envoyés');
    				   }
    				}
    			}
    		);
    	});
    });
    Et j'ai du coup mis un bouton submit à la place du lien dans mon formulaire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="submit" name="InputEnvoyer" />
    Le souci c'est qu'apparemment il me fait un GET (je me retrouve avec ma page index.php suivi de toutes les valeurs dans l'URL) et bien sûr mon fichier n'est pas créé

  6. #6
    Membre Expert
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    1 132
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 132
    Par défaut
    Bonjour,

    C'est pas beaucoup mieux

    Ce qu'il faut c'est ne faire le submit que lors du success de l'appel ajax ...


    devyan

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 87
    Par défaut
    Là où j'étais content c'est qu'il y avait au moins les données qui étaient envoyées (certes pas de la bonne manière mais bon...)

    Sinon faire faire le submit au niveau du success mais ... sans succès (elle était facile)

    Sinon je finit tôt aujourd'hui et je ne reviendrai que mardi (héhé je vais au hellfest ) du coup je ne pourrai pas répondre avant mardi.

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 87
    Par défaut
    Je me permet de relancé le sujet (j'ai eu un autre souci à régler entre temps) car je n'est toujours pas réussi à solutionner le problème.

Discussions similaires

  1. Activer le bouton submit en fonction des input texte
    Par miniBob dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 12/06/2009, 09h53
  2. submit par fonction javascript
    Par witch dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 21/12/2007, 07h54
  3. Boutons submit et fonctions PHP
    Par alliance dans le forum Langage
    Réponses: 3
    Dernier message: 17/08/2006, 16h59
  4. pb de fonction simple (this.form.submit()..)
    Par petitsims dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 14/01/2005, 09h29

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