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 :

[JQuery] Gérer les processus de manière synchrone avec Jquery


Sujet :

jQuery

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    96
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 96
    Par défaut [JQuery] Gérer les processus de manière synchrone avec Jquery
    Bonjour,

    J'aimerais pouvoir lancer certains processus lorsque d'autres se terminent avec le framework Jquery.

    Avec la fonction $.ajax, je sais qu'il est possible d'utiliser complete par exemple.

    Mais lorsque j'utilise plusieurs fois la fonction load de jquery, les processus se lancent dans n'importe quel ordre, même si j'utilise le callback de load ce qui me pose problème.

    Je ne sais pas si je suis très clair, demandez-moi plus de détails sinon.

    Et puis impossible de trouver plus d'informations sur Jquery excepté la doc sur le net.

  2. #2
    Expert éminent

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Par défaut
    Bonjour,
    sans ton code, pas évident, mais a priori il faut lancer les requêtes Ajax en synchrone et non en asynchrone ...
    Sinon, tu ne peux pas contrôler efficacement l'ordre de lancement.

    A+

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    96
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 96
    Par défaut
    Justement, je voulais éviter de passer en mode synchrone pour ne pas bloquer le navigateur sinon ça me fait des jolis freeze.

    Dans l'absolu, je ne sais pas comment utiliser le mode synchrone avec la fonction load de jquery, mais seulement avec des fonctions de plus bas niveau type $.ajax.

    Voilà mon bout de code néanmoins :

    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
     
    <script type="text/javascript">
    	// lorsque le document est chargé totalement
    $(document).ready(function() 
    	{
    			// Chargement des matricules
    		for(i=1; i<=7; i++)
    		{
    			$("#personne"+i+"des").load("ObtenirMatricule.php?Section=<?php echo $_POST["section"]; ?>&Matricule=<?php echo $_POST["matricule"]; ?>&NumLigne="+i);
    		}
     
    		// Chargement des sections
    		for(i=1; i<=7; i++)
    		{
    			$("#section"+i+"des").load("ObtenirSection.php?Section=<?php echo $_POST["section"]; ?>&NumLigne="+i);
    		}
    		// Chargement des postes
    		for(i=1; i<=7; i++)
    		{
    			$("#poste"+i+"des").load("ObtenirPoste.php?Section=<?php echo $_POST["section"]; ?>&NumLigne="+i);
    		}
    		// Chargement des codes jours
    		for(i=1; i<=7; i++)
    		{
    			$("#code"+i+"des").load("ObtenirCode.php?NumLigne="+i);
    		}
    		// Chargement des jours
    		for(i=1; i<=7; i++)
    		{
    			$("#date"+i+"des").load("ObtenirDate.php?Semaine=<?php echo $_POST["semaine"]; ?>&Annee=<?php echo $_POST["annee"]; ?>&NumLigne="+i);
    		}
    				$("#postesupp<?php echo $NumLigne; ?>").load("PosteSupp.php?NbPoste=2&NumLigne=1");
     
     
     
    					matricule = "<?php echo $_POST["matricule"]; ?>";			  
    			if ( matricule !="all")
    			{
    				for(i=1; i<=7; i++)
    				{
    				VerifPlanning(i);
    				}
    			}
    	}
    );
    </script>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     
    // VerifPlanning
    function VerifPlanning(numligne)
    {			$("#resultat").load("VerifPlanning.php?Date="+$("#date"+numligne).val()+"&NumMatricule="+$("#matricule"+numligne).val()+"&NumLigne="+numligne).val();
    }
    C'est donc en fin de code, mon appel de VerifPlanning s'effectue avant les autres appels, qui sont nécessaires pour avoir ensuite les bon paramètres. En conséquence dans VerifPlanning je n'ai ni Date ni NumMatricule de renseigné.

  4. #4
    Expert éminent

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Par défaut
    Tu dois pouvoir faire ça en gérant un compteur.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    var compteur = 0;
    $(document).ready(function() 
    	{
    			// Chargement des matricules
    		for(i=1; i<=7; i++)
    		{
    			$("#personne"+i+"des").load("ObtenirMatricule.php?Section=<?php echo $_POST["section"]; ?>&Matricule=<?php echo $_POST["matricule"]; ?>&NumLigne="+i);
    compteur++;
    		}
    ...
    ....
    if (compteur == le_nombre_attendu)
    VerifPlanning(i);
    A condition que l'ordre des requêtes précédentes soit sans importance

    A+

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    96
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 96
    Par défaut
    Bonne idée, mais le problème demeure. Le compteur s'incrémente dans toutes les boucles sans attendre que les traitements aient terminé leur exécutions.
    En conséquence mon VerifPlanning(i) s'éxécute encore trop tot .

  6. #6
    Expert éminent

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Par défaut
    Citation Envoyé par Flynt Voir le message
    Bonne idée, mais le problème demeure. Le compteur s'incrémente dans toutes les boucles sans attendre que les traitements aient terminé leur exécutions.
    En conséquence mon VerifPlanning(i) s'éxécute encore trop tot .
    J'ai simplifié, mais si tu incrémentes le compteur dans chaque onreadystatechange ça devrait le faire, non ?

    A+

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

Discussions similaires

  1. comment gérer les rejets de chargement comme avec SQL*Loader
    Par j6m dans le forum Développement de jobs
    Réponses: 3
    Dernier message: 13/09/2011, 15h16
  2. Réponses: 0
    Dernier message: 19/07/2010, 16h25
  3. Réponses: 4
    Dernier message: 07/05/2010, 16h16

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