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 :

Stopper le submit au retour d'un appel ajax


Sujet :

jQuery

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé

    Profil pro
    Inscrit en
    Avril 2002
    Messages
    78
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2002
    Messages : 78
    Par défaut Stopper le submit au retour d'un appel ajax
    hello,

    je ne sais pas si je suis pile poil dans la bonne section. Mes excuses si ceci n'était pas le cas.

    J'ai une formulaire dont l'envoi est déclanché par un bouton :
    code jquery :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $("#boutonsubmite").click(function (){
         $("#coursedateForm").submit();
    });
    lors du submit je check à l'aide d'un script php si les datas soumises sont correctes. Ceci se fait par l'intermédiaire d'un appel Ajax.
    Je dois bloquer la soumission du formulaire si le retour de l'appel ajax n'est pas une chaine de caractères vise.
    Un return false fonctionne en jquery, mais il ne fonctionne pas en ajax. J'ai donc trouvé la directive e.preventDefault(); qui me permet de stopper le submit en cas de besoin. mais ca marche que sous firefox et pas sous chrome. Voyez-vous une autre solution ?

    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
     
    $("#coursedateForm").submit(function(e) {       
       var dataStr = $("#coursedateForm").serialize();
       var res='  ';
       $.ajax({
          type: "POST",
          url: "checkDataCourseDate.php",
          data: dataStr,
          dataType: "json",
     
    success:function(response){									$("#error_formular").text('  ');
            for (key in response) {
                  res= key;
    	      $("#error_formular").append("<br />"+key+" : "+response[key]);
    	}
    	if (res!= '  '){
    	      $("#error_formular").slideUp("fast");
    									      $("#error_formular").slideDown("fast");
    e.preventDefault();
    		return false;
    	}
    	else {
    		return true;
    	}
     
           }
    });
    if (res=='  '){
        return true;
    }
    else {
    e.preventDefault();
    return false;
      }
      });

  2. #2
    Membre éclairé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2007
    Messages
    500
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2007
    Messages : 500
    Par défaut
    Hello,
    ce que tu peux faire c'est, laisser l'event .click() sur ton bouton, et dans la fonction, tu fais ton appel ajax et en fonction du résultat recu , tu fais un .submit() ou non.

  3. #3
    Expert confirmé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

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

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 418
    Par défaut
    Tu pourrais aussi faire une requête synchrone plutôt qu'asynchrone (qui est le comportement par défaut).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $.ajax({
          type: "POST",
          url: "checkDataCourseDate.php",
          data: dataStr,
          dataType: "json",
          async: false,
    Dans ce cas le navigateur attendra la réponse avant d'entreprendre toute autre action.

  4. #4
    Membre expérimenté

    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2008
    Messages
    136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 136
    Par défaut
    Juste une idée, non testée, mais si tu bind l'événement submit de ton formulaire, sur le success de ton ajax, un return false, peut être que ça peut marcher....a voir....

  5. #5
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Billets dans le blog
    125
    Par défaut
    Bonjour

    Exemple de transactions 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
    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
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    <!doctype html>
    <html lang="fr">
    <head>
    	<meta http-equiv="X-UA-Compatible" content="chrome=1">
    	<meta charset="utf-8">
    	<meta name="Author" content="Daniel Hagnoul">
    	<title>Forum jQuery</title>
    	<style>
    		body { background-color:#dcdcdc; color:#000000; font-family:sans-serif; font-size:medium; font-style:normal; font-weight:normal; line-height:normal; letter-spacing:normal; }
    		h1,h2,h3,h4,h5 { font-family:serif; }
    		div,p,h1,h2,h3,h4,h5,h6,ul,ol,dl,form,table,img { margin:0px; padding:0px; }
            img {border:none; }
    		h1 { font-size:2em; text-shadow: 4px 4px 4px #bbbbbb; text-align:center; }
    		p { padding:6px; }
            ul,ol,dl {list-style:none; padding-left:6px; padding-top:6px; }
            li {padding-bottom:6px; }
    		.conteneur { width:95%; min-width:800px; min-height:500px; margin:12px auto; background-color:#FFFFFF; color:#000000; border:1px solid #666666; }
     
    		/* TEST */
        </style>
    </head>
    <body>
    	<h1>Forum jQuery</h1>
    	<section class="conteneur">
     
    <form id="coursedateForm">
    	<input type="text" name="mot" value="Un mot pour remplir"/>
    	<input type="submit" value="go"/>
    </form>
     
    	</section>
    	<script charset="utf-8" src="http://code.jquery.com/jquery-1.5.1.min.js"></script>
    	<script>
    		$(function(){
     
    $("#coursedateForm").submit(function(){
    	var boolOK = false,
    		myData = $(this).serialize();
     
    	console.log(myData);
     
    	$.getJSON("test3.json", myData, function(data, textStatus, jqXHR){
    		console.log(data, textStatus, jqXHR);
     
    		// succès de la transaction, on doit traiter le contenu de data
    		$(".conteneur").append("<section>" + data[0].Nom + "</section>");
     
    		$.post("qr6.php", myData, function(data, textStatus, jqXHR){
    			console.log(data, textStatus, jqXHR);
     
    			// succès de la transaction, on doit traiter le contenu de data
    			$(".conteneur").append("<section>" + data + "</section>");
     
    		}, "text").error(function(jqXHR, textStatus, errorThrown){
    			console.log(jqXHR, textStatus, errorThrown);
     
    			// échec de la transaction, gérer la catastrophe
     
    		}).complete(function(jqXHR, textStatus){
    			console.log(jqXHR, textStatus);
     
    			// la transaction s'est terminée par un succès ou par un échec
    		});
     
    	}).error(function(jqXHR, textStatus, errorThrown){
    		console.log(jqXHR, textStatus, errorThrown);
     
    		// échec de la transaction, gérer la catastrophe
     
    	}).complete(function(jqXHR, textStatus){
    		console.log(jqXHR, textStatus);
     
    		// la transaction s'est terminée par un succès ou par un échec
    	});
     
    	return boolOK;
    });
     
    		});
    	</script>
    </body>  
    </html>

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

  6. #6
    Membre confirmé

    Profil pro
    Inscrit en
    Avril 2002
    Messages
    78
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2002
    Messages : 78
    Par défaut
    hello à tous,

    merci pour vos réponses. J'ai essayé la méthode Daniel avec le
    $.getJSON. ça roule à un 2 détail près.

    lorsque je retourne ma condition de réussite boolOK, celle-ci n'est jamais mise à true.

    en fait l'exécutions du code dans le $.getJSON est effectuée après le return. Je comprend pas très bien pourquoi..

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

Discussions similaires

  1. Réponses: 14
    Dernier message: 18/07/2011, 23h54
  2. Erreur en retour d'un appel à un WebService
    Par Marsupilami_00 dans le forum Services Web
    Réponses: 1
    Dernier message: 27/11/2008, 16h14
  3. Retour dans le Page_load, après un appel AJAX
    Par BouB dans le forum ASP.NET
    Réponses: 1
    Dernier message: 16/07/2008, 09h38
  4. Problème au retour d'un appel de méthode
    Par tom31 dans le forum Général Java
    Réponses: 1
    Dernier message: 20/04/2008, 10h36
  5. Problème de retour aprés l'appel d'une popup
    Par PADAWANN33 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 06/02/2006, 15h53

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