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

Bibliothèques & Frameworks Discussion :

Ajax.Request et JSon et return false [Prototype]


Sujet :

Bibliothèques & Frameworks

  1. #1
    Membre du Club
    Femme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2006
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2006
    Messages : 120
    Points : 62
    Points
    62
    Par défaut Ajax.Request et JSon et return false
    Bonjour,

    Voilà mon problème.
    J'ai un formulaire et je souhaite faire une vérification en Ajax du formulaire (j'ai besoin de faire des requêtes pour ça).

    Voici ce que ca donne niveau 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
    53
     
    <script type="text/javascript">
     
    function check()
    {
    	var soumettre = true;
    	alert("debut: " + soumettre); // affichage de true
    	new Ajax.Request('ajax/verif_ref.php',
    	{
    		evalJSON: true,
    		evalScripts:true,
    		method: 'get',
    		parameters: $('frm').serialize(true),
    		onSuccess: function(transport, json)
    		{
    			if( json.reference.error_reference != null )
    			{
     
    				$('error_reference').innerHTML = json.reference.error_reference;
    				soumettre = false;
    				alert("test reference " + soumettre); // affichage de true très bref puis false
    			}
     
    			if( json.modele.error_modele != null )
    			{
    				$('error_modele').innerHTML = json.modele.error_modele;
    				soumettre = false;
    				alert("test modele " + soumettre); // affichage de true très bref puis false
    			}
     
    			if( json.poids.error_poids != null )
    			{
    				$('error_poids').innerHTML = json.poids.error_poids;
    				soumettre = false;
    				alert("test poids " + soumettre); // affichage de true très bref puis false
    			}
     
    			if( json.prix.error_prix != null )
    			{
    				$('error_prix').innerHTML = json.prix.error_prix;
    				soumettre = false;
    				alert("test prix " + soumettre); // affichage de true très bref puis false
    			}
     
            }
    	});
     
    	alert("test fin " + soumettre); // affichage de true
    	return false;
    }
    </script>
     
    <form action="" method="post" name="frm" id="frm" onsubmit="return check();" >
    Ma page Ajax renvoie donc un tableau d'erreur ou non que je traite avec JSon.
    Si le tableau contient une valeur différent de null, j'affiche une petite phrase d'erreur.

    Le problème c'est qu'il faut que je renvoie vrai au faux à la fin pour envoie les données du formulaire uniquement s'il n'y a pas d'erreur.

    J'ai donc créé une variable que j'initialise à true (j'ai testé également en chaine de caractère).
    Si je passe dans une de mes 4 conditions je le met à false. Or quand je fais mon alert(soumettre) (dans chacune de mes conditions), la fenetre va m'afficher true pendant un millième de seconde puis false. Et le dernier test de fin va me retourner true alors qu'elle sont passées dans les conditions au dessus.

    Je ne comprend pas pourquoi...

    Merci d'avance pour vos réponse.

  2. #2
    Membre expérimenté
    Avatar de gwyohm
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2007
    Messages
    925
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2007
    Messages : 925
    Points : 1 333
    Points
    1 333
    Par défaut
    Bonjour,

    Ton problème, c'est que tu raisonnes en synchrone alors que l'exécution du code ne l'est pas.

    Quand tu fais , tu démarres par défaut un appel asynchrone, ce qui signifie que pendant que la requete AJAX s'execute, ton code continue de tourner en gros, il arrive directement à
    2 solutions pour résoudre le problème :
    1. Forcer la requete AJAX à être synchrone
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      4
      5
      6
      new Ajax.Request('ajax/verif_ref.php',
      	{
      		evalJSON: true,
      		evalScripts:true,
      		asynchronous: false,
      ...
      En faisant ca, le code sera synchrone ; mais l'experience utilisateur risque d'être dégradée
    2. Changer d'algorithme : faire systématiquement un return false dans ta fonction, et modifier le callback onSuccess pour qu'il déclenche la soumission

  3. #3
    Membre du Club
    Femme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2006
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2006
    Messages : 120
    Points : 62
    Points
    62
    Par défaut
    Merci beaucoup, j'ai choisi la première solution car pour la deuxième, il est impossible de faire un return false ou true dans le onsuccess. Dans les deux cas, mon formulaire est soumis.

    Merci beaucoup.

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

Discussions similaires

  1. [AJAX] Mise en place d'un réponse dans Ajax.Request via JSON
    Par polothentik dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 13/05/2008, 10h05
  2. [AJAX] Ajax.Request et le caractère '+'
    Par jon301 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 08/11/2006, 22h34
  3. verification de formulaire malgres return false
    Par emile13 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 10/03/2006, 19h54
  4. Return false inopérent sur un "onclick"
    Par El Riiico dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 10/01/2006, 12h47
  5. Demande d'explication : "return false"
    Par mickeliette dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 04/10/2004, 11h06

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