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 :

Synchronisation, une instruction javascript après une autre.


Sujet :

jQuery

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2011
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2011
    Messages : 13
    Par défaut Synchronisation, une instruction javascript après une autre.
    Bonjour,

    Je dois gérer une IHM Web qui après avoir cliqué sur un bouton avec un id spécifique affiche une fenêtre de sélection de cible (par le biais de CheckBox) avec Ajax.

    Seulement je dois aussi prévoir une fonctionnalité qui permet de copier une sélection qui a été déjà passé. J'ai donc crée un bouton qui appelle exactement la même fonction qu'avant mais qui à la fin coche les checkbox qui sont apparu dans la fenêtre de sélection des cibles.

    Voici le code : (tout tiens en une fonction, le fait de créer une sélection vierge ou à partir de l'existant se fait en fonction du deuxième argument de la fonction):

    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
    function apparaitreCreationCommande(idItem,idCommande) {
     
    // On fait apparaître la fenêtre de création de commande, en chargeant les cibles correspondant au déploiement
    var idDeploiement = $("#"+idItem).attr("name");
    $("#div_creation").attr('src','');
    var action = $("#form_listeCible").attr("action");
    var dataString = "idDeploiement=" + idDeploiement;
    $('#div_creation').html('<p><img src="img/ajax-loader.gif" width="220" height="19" /></p>');	
     
     // Requête Ajax pour obtenir les choix possibles dans la sélection			
    $.ajax( {
    	type : "POST",
    	url : action,
    	data : dataString,
    	dataType : "html",
    	success : function(data) {
    	        $('#div_creation').html(data);
    	},
    	error : function() {}
    });
     
    $('#li_deploiement_'+idDeploiement).css("background","#DEFAFF");
    document.getElementById('wrap').style.height="500px";
    $(".boutonOuvrirCreation").attr('disabled', 'disabled');
    $('#div_creation').slideToggle(); // La fenêtre de sélection a été chargé avec la requête Ajax, je l'affiche alors avec une fonction JQuery
     
    	// Si une idCommande a été renseignée (idCommande != 0, avec le bouton "Copier Commande") on coche les
    	// cases correspondant à la commande copiée
     
    	if (idCommande != 0)
    	{
    		fonctionCocher(); // Contient des instructions du type : $("#toto[type='checkbox']").attr("checked","true");	
    	}
    	return false;
    }
    Le soucis arrive au moment où je veux cocher les cases (la fonction fonctionCocher), où rien ne se passe. En lançant les instructions qu'il y a dans fonctionCocher() par firebug les cases se cochent bien.

    Je pense qu'il y a un soucis de synchro entre les instructions Javascript, car il me semble qu'après avoir lancé un traitement on appelle la suivante sans vraiment avoir la fin de la première...

    Quelqu'un aurait-il une idée pour palier à ce problème? J'aimerai bien ne pas à avoir utiliser des fonctions d'attente comme delay, bien que je ne sois pas sûr que ça marcherait.

    Merci d'avance !

  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 : 54
    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
    car il me semble qu'après avoir lancé un traitement on appelle la suivante sans vraiment avoir la fin de la première...
    C'est presque ça, en fait, au moment d'interpréter le code, JavaScript fait un shuffle des instructions histoire de rigoler...
    Ou alors, il s'agit juste du fait que tu continues les traitements après l'appel AJAX avant d'avoir reçu la réponse du serveur
    As-tu bien appréhendé la notion de requête asynchrone ?
    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 averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2011
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2011
    Messages : 13
    Par défaut
    Merci pour le déplacement du sujet et pour la réponse rapide !

    Je comprends le principe des requêtes asynchrone, que le serveur n'attend pas la fin d'une requête pour continuer. Cependant je ne la maîtrise pas vraiment, et n'ai pas le temps de m'initier à fond sur js et ajax du coup je plante un peu sur ces points là...

    Je sais cependant qu'on pourrait utiliser des méthodes sur un objet XMLHttpRequest que j'aurai instantié, pour être informé de son aboutissement.
    J'ai lu des choses dessus mais pas assez pour l'utiliser facilement, mais suis-je sur la bonne voie?

  4. #4
    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 : 54
    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
    Cependant je ne la maîtrise pas vraiment, et n'ai pas le temps de m'initier à fond sur js et ajax du coup je plante un peu sur ces points là...
    Ben ouais... c'est souvent ça le problème : vouloir utiliser des outils sans apprendre au préalable comment ça fonctionne.
    Je dis pas ça spécialement pour toi, mais c'est une attitude que l'on rencontre régulièrement...

    Bref, pour faire simple, toutes les instructions liées à ce que te renvoie le serveur doivent se trouver dans la fonction associée à success.
    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

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2011
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2011
    Messages : 13
    Par défaut
    Merci bien ça marche !

    Je sais que cette mentalité n'est pas spécialement propre mais on nous demande de plus en plus de devoir toucher à une technologie sans avoir le temps de se l'approprier..

    En tout cas merci de tes réponses !

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 30/07/2014, 10h44
  2. [AJAX] executer une fonction javascript apres une reponse AJAX
    Par katie.gillot dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 08/10/2008, 17h39
  3. Création d'une table d'apres une autre
    Par A.S.I Gérard dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 14/08/2007, 18h48
  4. Réponses: 13
    Dernier message: 27/12/2005, 09h17
  5. copie d'une table Y d'une base A vers une table X d'une base
    Par moneyboss dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 30/08/2005, 21h24

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