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 :

Attendre la fin de l'exécution d'une instruction?


Sujet :

JavaScript

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2007
    Messages : 7
    Points : 5
    Points
    5
    Par défaut Attendre la fin de l'exécution d'une instruction?
    Bonjour,

    J'ai un problème dans une fonction Javascript.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    function mafonction()
    {
    	document.getElementById('monformulaire').submit();
    	mafonction2();
    }
    J'aimerais que mafonction2() ne s'effectue que quand le submit du formulaire s'est fini.
    submit() etant une fonction de javascript, je ne peux pas mettre de flag..

    Merci d'avance.

  2. #2
    Membre émérite Avatar de Madfrix
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 326
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 326
    Points : 2 566
    Points
    2 566
    Par défaut
    Salut, tu peux toujours exécuter ta deuxième fonction après x millisecondes avec un setTimeout :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    setTimeout("mafonctio2()", 2000);

    Ta fonction mafonction2() se déclenchera au bout de 2 secondes

  3. #3
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 681
    Points : 5 221
    Points
    5 221
    Par défaut
    quand tu soumets un formulaire, la page d'origine devient inaccessible...

  4. #4
    Membre émérite Avatar de Madfrix
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 326
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 326
    Points : 2 566
    Points
    2 566
    Par défaut
    Citation Envoyé par javatwister Voir le message
    quand tu soumets un formulaire, la page d'origine devient inaccessible...
    Bah à ce moment on peut faire un

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    window.opener.document.getElementById('monformulaire').submit();
    dans une pop-up pour laisser accessible le reste de la fonction de la page parente

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2007
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    Le souci c'est que je peux pas vraiment savoir combien de temps va prendre le submit()..
    ca depend vraiment des cas

    La page d'origine inaccessible, c'est pas génant
    En fait le submit() va vider une table MySQL, puis la remplir a partir des données du formulaire (de taille dynamique)
    mafonction2(), c'est juste une redirection pour un affichage des données rentrées dans cette table

    d'ou le probleme a l'affichage qui se fait trop tot et donc ne trouve pas toutes les données..

  6. #6
    Membre émérite Avatar de Madfrix
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 326
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 326
    Points : 2 566
    Points
    2 566
    Par défaut
    Tu remplis ta table mySQl avec du PHP ?

    Si oui, je pense que tu utilise une boucle de cette forme ci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    while($ligne = mysql_fetch_array(...) != null){
    ...
    }

    Eh bien pourquoi ne pas lancer ta fonction une fois sorti du while ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    echo "<script language="Javascript">mafonction2();</script>";

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 106
    Points : 56
    Points
    56
    Par défaut
    sachant que la validation entraine la fermeture de la page en cours :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    window.onunload=mafonction2();

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2007
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    le probleme c'est que j'ai besoin de plusieurs boutons 'submit' ayant différentes actions sur mon formulaire.. Mais dans tous les cas, la premiere action est de reremplir la table MySQL.

    A chacun de ses boutons submit correspond une fonction javascript comme mafonction(), qui remplit la table, puis fait ses autres actions

    J'ai donc besoin d'isoler ce remplissage de table commun à tous

  9. #9
    Membre émérite Avatar de Madfrix
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 326
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 326
    Points : 2 566
    Points
    2 566
    Par défaut
    En fait si j'ai bien compris, tu as plusieurs formulaires qui pointent tous sur une même page de traitement PHP.

    Pourquoi ne pas créer pour chaque formulaire un champ caché contenant le nom du formulaire comme ça tu pourra lancer les différentes fonctions que tu souhaite pour chaque formulaire.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    $NOM_FORM = $_POST['nom_form'];
     
    if($NOM_FORM = "form1"){
    //lancement de toutes tes fonctions pour le formulaire1
    }
     
    if($NOM_FORM = "form2"){
    //lancement de toutes tes fonctions pour le formulaire2
    }
     
    ...

  10. #10
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2007
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    Non, j'ai un seul formulaire, mais j'ai besoin de plusieurs types de traitements.

    Le point commun de tous ces traitements, c'est l'envoi des données dans la table MySQL. C'est ce que fait la page de traitement PHP.

  11. #11
    Membre émérite Avatar de Madfrix
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 326
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 326
    Points : 2 566
    Points
    2 566
    Par défaut
    Citation Envoyé par mhanyu Voir le message
    le probleme c'est que j'ai besoin de plusieurs boutons 'submit' ayant différentes actions sur mon formulaire..
    Essayes plutôt de construire plusieurs formulaires ayant chacun un bouton submit. Ta programmation je pense en sera grandement facilitée

  12. #12
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2007
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    ok d'accord

    merci

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

Discussions similaires

  1. Réponses: 11
    Dernier message: 26/06/2008, 22h41
  2. Réponses: 7
    Dernier message: 18/07/2007, 16h40
  3. Attendre la fin de l'execution d'une fonction
    Par Invité dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 20/04/2007, 10h33
  4. Réponses: 5
    Dernier message: 03/04/2007, 17h37
  5. Réponses: 3
    Dernier message: 22/10/2004, 12h04

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