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

JavaScript Discussion :

Contrôler l'exécution des instructions


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Novembre 2009
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 13
    Par défaut Contrôler l'exécution des instructions
    Bonjour !

    Voilà mon souci est que, dans une fonction, j'ai entre autre 3 instructions qui devraient s'exécuter l'une après l'autre (en tout cas c'est ce que j'attendais d'un langage procédural comme JavaScript, ou alors j'ai rien compris...)

    Sauf que, la fonction XAJAX en seconde position, n'a pas l'air d'attendre la récupération des valeurs en première position, valeurs que je passe en paramètre dans l'appel de cette fonction XAJAX.

    De même pour l'instruction JavaScript, qui n'a pas l'air d'attendre la fin de l'exécution de la fonction XAJAX pour s'exécuter.

    Or j'ai impérativement besoin que chaque instructions soit bloquantes pour la suite... J'ai donc rusé en définissant un timer de quelques centaines de millisecondes, mais c'est du "bob le bricoleur style" et en général çà donne lieu à d'horribles bugs suivants les navigateurs, les postes, les couleurs...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    function remplir() {
    	var pid = (document.getElementById("acSelect_table").value).split(";")[1];
    	var eid = (document.getElementById("acSelect_table").value).split(";")[2];
    	setTimeout('xajax_remplir_table('+pid+', '+eid+')',100);
    	setTimeout('document.getElementById("selection_'+eid+'").checked	=	"true"',300);
    }
    Merci d'avance

  2. #2
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Par défaut
    Bonsoir,

    1- Javascript n'est pas procédural comme tu le penses, XMLHttpRequest que tu utilises pour AJAX est un objet par exemple .
    2-
    Sauf que, la fonction XAJAX en seconde position, n'a pas l'air d'attendre la récupération des valeurs en première position, valeurs que je passe en paramètre dans l'appel de cette fonction XAJAX.
    Je ne comprend pas?
    3-
    De même pour l'instruction JavaScript, qui n'a pas l'air d'attendre la fin de l'exécution de la fonction XAJAX pour s'exécuter.
    Je suis sûr que tu travailles en mode asynchrone (ben on ne vois pas la fonction )

    A+.

  3. #3
    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
    Comme le dit Andry, l'utilisation de xajax ne te dispense pas de connaitre comment fonctionne une requête AJAX sur le client, en particulier la notion de requête asynchrone

    ajax.developpez.com/cours
    javascript.developpez.com/faq/javascript/?page=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

  4. #4
    Membre Expert Avatar de Willpower
    Homme Profil pro
    sans emploi
    Inscrit en
    Décembre 2010
    Messages
    1 009
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : sans emploi

    Informations forums :
    Inscription : Décembre 2010
    Messages : 1 009
    Par défaut
    perso, je ne me suis jamais pris la tête avec les paramètres synchrones et asynchrone (j'avais essayé il y a des années au début du xhr et sauf erreur de ma part, le synchrone ne fonctionnait pas .. ou pas partout.. ou je n'ai jamais réussi à les utiliser). bref, je privilégie les fonctions de callback pour la suite des instructions. (les fonctions de callback sont implémenté dans la plupart des lib ajax autrement si tu codes toi-même ton appel, tu check l’évènement onReadyStateChange... ou un truc comme ça qui déclenchera la suite de tes instructions que tu veux synchrones.)

  5. #5
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Par défaut
    Citation Envoyé par Willpower Voir le message
    j'avais essayé il y a des années au début du xhr et sauf erreur de ma part, le synchrone ne fonctionnait pas .. ou pas partout.. ou je n'ai jamais réussi à les utiliser
    Si si, ça fonctionne nickel sauf qu'on n'utilise pas un fonction callback du onreadystatechange pour récupérer le résultat.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    function modeSynchrone(){
    	var xhr = createXhr();
    	xhr.open("GET","page.php?var1=1",false);
    	xhr.send(null);
    	alert(xhr.responseText);
    }
    A+

  6. #6
    Membre Expert Avatar de Willpower
    Homme Profil pro
    sans emploi
    Inscrit en
    Décembre 2010
    Messages
    1 009
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : sans emploi

    Informations forums :
    Inscription : Décembre 2010
    Messages : 1 009
    Par défaut
    Citation Envoyé par andry.aime Voir le message
    Si si, ça fonctionne nickel sauf qu'on n'utilise pas un fonction callback du onreadystatechange pour récupérer le résultat.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    function modeSynchrone(){
    	var xhr = createXhr();
    	xhr.open("GET","page.php?var1=1",false);
    	xhr.send(null);
    	alert(xhr.responseText);
    }
    A+
    oui, j'ai testé juste après mon poste et ça fonctionnait ... juste qu'il y a moultes années quand j'avais essayé, ça n'avait pas fonctionné ! (mais j'étais un newbie en JS donc, c'était p-e moi). [/drunk]

Discussions similaires

  1. Pas d'exécution des instructions après boucle
    Par dubitoph dans le forum VBScript
    Réponses: 1
    Dernier message: 02/09/2013, 17h31
  2. ordre d'exécution des instructions !
    Par troumad dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 27/06/2012, 14h24
  3. exécuter des instruction pendant 10s
    Par eclipse2007 dans le forum MATLAB
    Réponses: 3
    Dernier message: 15/06/2009, 06h50
  4. [telnet] Exécuter des instructions en cas d'echec
    Par xjinh dans le forum Modules
    Réponses: 3
    Dernier message: 15/11/2005, 17h43
  5. Temps d'exécution des instructions FPU
    Par ubi dans le forum Assembleur
    Réponses: 2
    Dernier message: 24/10/2003, 18h39

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