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 :

Délai de réponse


Sujet :

jQuery

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    432
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 432
    Par défaut Délai de réponse
    Bonjour,

    Je rencontre actuellement un problème en faisant de l'Ajax en jquery.
    Je m'explique j'ai déjà réussit à faire de l'Ajax sans jquery et il y avait une fonction qui bouclait en écoutant la réponse du serveur.

    La dans mon cas je valide un formulaire qui appel une fonction pour contrôler les champs. Si mon champs est bon je met le marqueur associé à true sinon a false, et a la fin de la fonction je vérifie que tout mes marqueur soient a true.

    Bon dans ma fonction je fait appel a une fonction PHP de contrôle "contraole_tva()" d'ou mon besoin d'Ajax, seulement la premier fonction "controle_all_champ()" se termine avant d'avoir que "controle_tva()" est renvoyé la réponse et changer le marqueur donc forcement tous mes marqueurs ne sont pas a true comme ils devraient l'être.

    je vous comme la partie qui contrôle la tva qui se trouve dans "controle_all_champ()" :
    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
    if($("#numTvaIntra").val() == "")		{
    			$("#numTvaIntra").css({borderColor:"red"});
    			alert('Veuillez remplir le champ TVA Intracommunautaire !!');
    			juste7 = false;
    		}
    		else	{
                        if(control_TVA() == true)                    {
                            $("#numTvaIntra").css({border:"1px ridge #7F9DB9"});
    			juste7 = true;
                        }
                        else                    {
                            $("#numTvaIntra").css({borderColor:"red"});
    			alert('Champ TVA Intracommunautaire non valide!!');
    			juste7 = false;
                        }
    		}
    Ainsi que la fonction qui utilise l'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
    function control_TVA()	{
                alert('je suis dedans');
                var resultat = false;
                $.ajax
                (
                    {
                        type: 'GET',
                        url: 'getVat.php?vat_number='+$("#numTvaIntra").val(),
                        timeout: 30000,
                        success: function(data) 
                            {
                                alert('on a un data');
                                if(data.valid == 1)
                                {
                                    resultat = true;
                                }
                                else
                                {
                                    resultat = false;
                                }
                            },
                        error: function() 
                            {
                                alert('La requête n\'a pas abouti'); 
                            }
                    }
                );    
         alert('tototototot');
                    return resultat;
    	}
    Pouvez-vous m'aider?

  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
    Es-tu sûr d'avoir bien compris la notion de requête asynchrone, qui est la base d'AJAX ?
    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
    Membre chevronné Avatar de hariman
    Homme Profil pro
    Développeur Java, Android
    Inscrit en
    Janvier 2008
    Messages
    200
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations professionnelles :
    Activité : Développeur Java, Android
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2008
    Messages : 200
    Par défaut
    Bonjour,

    Les fonctions anonymes passées en paramètre à la méthode ajax() (success et error) sont exécutées en asynchrone, donc on ne sait pas quand la variable resultat va être assigné.
    Une solution que je suggère: faudrait que tu mettes les instructions de controle_all_champ() DANS ces fonctions anonymes.

    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
     
                      success: function(data) 
                            {
                                alert('on a un data');
                                if(data.valid == 1)
                                {
                                    $("#numTvaIntra").css({border:"1px ridge #7F9DB9"});
    			        juste7 = true;
                                }
                                else
                                {
                                    $("#numTvaIntra").css({borderColor:"red"});
    			        alert('Champ TVA Intracommunautaire non valide!!');
    			        juste7 = false;
                                }
                            },

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    432
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 432
    Par défaut
    Bonjour,
    pour asynchrone, je pense que oui, pour moi le code js est exécuté mais n'attend pas la réponse du serveur php, contrairement au php qui exécute fonction par fonction en attendant la réponse de chacune avant de continuer.

    en ce qui concerne la fonction anonyme je ne comprend pas bien ce que cela changera pouvez vous m'expliquer?

  5. #5
    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
    Citation Envoyé par darkterreur
    pour asynchrone, je pense que oui
    Ta fonction control_TVA() semble pourtant montrer que non... A quoi peut bien servir le return resultat; dans ce cas ?

    Le plus simple pour toi (mais pas forcément le plus propre) serait de faire une requête synchrone.
    Le plus propre (selon moi) serait, comme le suggère hariman, de revoir ta conception...
    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

  6. #6
    Membre chevronné Avatar de hariman
    Homme Profil pro
    Développeur Java, Android
    Inscrit en
    Janvier 2008
    Messages
    200
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations professionnelles :
    Activité : Développeur Java, Android
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2008
    Messages : 200
    Par défaut
    Ces fonctions anonymes sont appelées après la réception de la réponse de la requête ajax, donc la ligne "return resultat;" à la fin de "control_TVA()" est exécutée AVANT l'arrivée de la réponse (dans la majorité des cas).
    Le moyen le plus propre est celui que je viens de poster.

  7. #7
    Membre chevronné Avatar de hariman
    Homme Profil pro
    Développeur Java, Android
    Inscrit en
    Janvier 2008
    Messages
    200
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations professionnelles :
    Activité : Développeur Java, Android
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2008
    Messages : 200
    Par défaut
    Bovino,

    Tu arrives toujours à poster tes réponses avant les miennes

  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    432
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 432
    Par défaut
    merci pour vos informations
    maintenant dans le cadre que vous avez décrit, si j'ai deux contrôle appelé en ajax.
    Votre situation, fonctionne bien avec un mais pour deux?

    je peux peut être créer une fonctionne qui exécute mes deux ajax, mais je ne peux pas appeler la fonction contrôle global ensuite pour les deux retour de réponse de la requête.

    ou peut être que j'ai rien comprit?

Discussions similaires

  1. Délai de réponse d'un joueur.
    Par MCL33 dans le forum Débuter avec Java
    Réponses: 10
    Dernier message: 05/11/2012, 13h30
  2. [1.x] délai de réponse ahurissant
    Par erictomcat dans le forum Symfony
    Réponses: 24
    Dernier message: 11/01/2011, 13h17
  3. délai de réponse après postulation
    Par Enohra dans le forum Contrat
    Réponses: 3
    Dernier message: 10/05/2009, 20h01
  4. [Turbo Pascal] Introduire un délai de réponse
    Par lex001 dans le forum Turbo Pascal
    Réponses: 8
    Dernier message: 17/03/2009, 02h35

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