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 :

Envoi d'un formulaire sans changer de page


Sujet :

jQuery

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut Envoi d'un formulaire sans changer de page
    Bonjour, je suis actuellement en train de développer un site et je me suis dit "Pourquoi ne pas utiliser AJAX pour vérifier les données de mon inscription ?" J'ai donc commencé mon code mais lors de l'envoie de mon formulaire, mon navigateur me redirige vers la page sensée traiter les données alors que je veux rester sur la même page et afficher l'erreur qui ne va pas.

    Voici mon formulaire :
    Code html : 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
    <form method="POST" onsubmit="return false" action="includes/verifinscription/verification.php" id="insc_form" class="form-horizontal" style="margin:20px;">
    	<div class="form-group" id="insc_pseudo">
    	    <label for="pseudo" class="col-lg-2 control-label" style="width:200px;">Pseudonyme</label>
    	    <div class="col-lg-6">
    	      	<input type="text" id="insc_input_pseudo" class="form-control" name="pseudo" placeholder="Pseudonyme Minecraft.net" onkeypress="return verif_char_pseudo(event);">
    	    	<span id="pseudo_ajax" style="display:none;"><img src="img/loader.gif"></span>
    	    </div>
    	</div>
     	<div class="form-group" id="insc_mail">
    	    <label for="mail" class="col-lg-2 control-label" style="width:200px;">Adresse électronique</label>
    	    <div class="col-lg-6">
    	      	<input type="email" id="insc_input_mail" class="form-control" name="mail" placeholder="Adresse électronique">
    	    	<span id="mail_ajax" style="display:none;"><img src="img/loader.gif"></span>
    	    </div>
    	</div>
    	<div class="form-group" id="insc_pswd">
    	    <label for="pswd" class="col-lg-2 control-label" style="width:200px;">Mot de passe</label>
    		<div class="col-lg-6">
    	      	<input type="password" id="insc_input_pswd" class="form-control" name="pswd" placeholder="Mot de passe">
    	    </div>
      	</div>
    	  	<div class="form-group" id="insc_pswdv">
    	    <label for="pswdv" class="col-lg-2 control-label" style="width:200px;">Mot de passe</label>
    	    <div class="col-lg-6">
    	      	<input type="password" id="insc_input_pswdv" class="form-control" name="pswdv" placeholder="Encore une fois">
    	    </div>
      	</div>
    	<div class="checkbox">
        	<label>
          		<input type="checkbox" name="checkbox" id="insc_checkbox"> J'accepte les <a onclick="alert(regles);">règles</a> et m'engage à les respecter.
        	</label>
      	</div>
      	<div id="ajax_return"></div>
      	<input type="submit" id="insc_sub" class="btn btn-orange btn-block" style="margin-top:20px;" value="S'inscrire">
    </form>
    Mon script jQuery
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    $(document).ready(function(){
    	$("#insc_form").on("submit", function(){
    		$.ajax({
                            url: $this.attr("action"),
                            type: $this.attr('method'),
                            data: $this.serialize(),
                            dataType: 'json',
                            success: function(data){
                	            $("#ajax_return").append(data);
                                alert(data);
                            }
                    });
    	});
    });
    Et ce que dois renvoyer PHP pour l'instant
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <?php
    	echo json_encode(print_r($_POST));
    ?>
    Dernière modification par NoSmoking ; 21/05/2014 à 07h44. Motif: Merci d'indiquer le langage utilisé ([code=xxx]) pour activer la coloration syntaxique.

  2. #2
    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 : 55
    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
    Traité un nombre incalculable de fois...
    Citation Envoyé par Fluttershaash
    Pourquoi ne pas utiliser AJAX pour vérifier les données de mon inscription ?
    La réponse courte à cette question, ce serait : "Parce qu'actuellement, tu ne sais pas te servir d'AJAX".

    Bref, pour aller à l'essentiel : lors du clic sur un bouton submit, le navigateur :
    • exécute les fonctions JavaScript liées à cet événement ;
    • soumet le formulaire à l'adresse indiquée par l'attribut action.


    Et c'est bien ce qui se passe dans ton code : tu envoies la requête AJAX, puis tu pars vers la page de soumission (sans même avoir attendu la réponse de la requête).
    Donc tant que ton script n'indique pas expressément de ne pas effectuer la seconde étape, ton formulaire sera soumis.

    Maintenant, à toi de te plonger dans les tutos de base, dans les FAQ, dans la recherche sur le forum pour comprendre comment éviter cela.

    PS : et au passage
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    echo json_encode(print_r($_POST));
    ça n'a aucun sens de transformer en JSON une fonction d'affichage...
    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

  3. #3
    Invité
    Invité(e)
    Par défaut
    Tu penses bien que j'avais déjà testé ça avant de poster dans ce forum. Et si cela fonctionnait je n'aurais pas eu le besoin de demander votre aide. J'ai aussi essayé d'ajouter un return false; après mon instruction ajax mais sans succès. Voyant qu'aucune solution testée ne marchaient j'ai remis mon code de départ.

  4. #4
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    J'ai aussi essayé d'ajouter un return false; après $.ajax mais sans succès.
    c'est que tu l'as mal implémenté !

    il faut inhiber l'envoi du form soit par un preventDefault soit par un return false.
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  5. #5
    Invité
    Invité(e)
    Par défaut
    Je teste ça et je reviens vous voir lorsque j'ai fini

  6. #6
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    essaye
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $("#insc_form").on("submit", function(e){
                     e.preventDefalut();
    		$.ajax({
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  7. #7
    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 : 55
    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
    Et on peut savoir à quoi correspond la variable $this selon toi ?
    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

Discussions similaires

  1. Envoi de formulaire sans recharger la page
    Par argon dans le forum jQuery
    Réponses: 12
    Dernier message: 22/09/2014, 05h27
  2. JEE : affichage d'un formulaire aprés un choix du menu sans changer la page
    Par lavienormale dans le forum Développement Web en Java
    Réponses: 0
    Dernier message: 04/05/2011, 16h19
  3. submit sans changer de page
    Par trax44 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 22/11/2006, 10h05
  4. Réponses: 1
    Dernier message: 24/09/2006, 14h36
  5. Changer d'adresse de page sans changer de page...
    Par CFP dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 28/02/2006, 13h15

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