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 :

Attendre la réponse avant de continuer


Sujet :

jQuery

  1. #1
    Membre averti
    Avatar de Sparky95
    Homme Profil pro
    Full Stack (web) developer
    Inscrit en
    Décembre 2016
    Messages
    379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : Belgique

    Informations professionnelles :
    Activité : Full Stack (web) developer
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2016
    Messages : 379
    Points : 358
    Points
    358
    Par défaut Attendre la réponse avant de continuer
    Bonjour,
    je chercher lors de certaines actions à vérifier que le manager soit connecté et si ce n'est pas le cas demander la connection de celui si avant de continuer le process.
    Voici le code reconstitué
    Code javascript : 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
    47
    48
    49
    50
    51
    52
    53
    54
    55
     
    µ_var = {}
    µ_var.manager = {
        _key = null,
        set manager(key) { this._key = key },
        get manager() { return this._key; }
    }
     
     
    function is_manager(){
        let manager_key = µvar.manager.key();
        let result = false;
     
     
        if(!manager_key)
            return false;
     
     
        $.ajax({
            url: 'is_manager_path',
            type: 'post',
            dataType: 'json',
            data: {manager_key: manager_key},
            async: false
        })
        .done(function(data) {
            result = data;
        });
        return result;
    }
     
     
    function call_manager(){
        $("#modal_call_manager").show();
     
     
    }
     
     
    $(function(){
        $("#form").submit(function(e){
            if(!is_manager()){
                e.preventDefault();
                call_manager();
                return;
            }
            alert("manager_logged sending form");
        });
     
     
        $("#form").on("ajax:success", function(e, data, options) {
            data === false? Alert("login manager failed!") : µvar.manager.key(data);
            $("#modal_call_manager").modal("hide");
        });
    });

    actuellement, je bloquais l'accès et l'utilisateur devait refaire la manipulation.
    exemple:
    action utilisateur envoie formulaire => manager pas connecté -> formulaire bloqué
    => demande de connection à l'employé
    => action utilisateur renvoie formulaire => manger connecté -> le formulaire est envoyé
    il m'a été demandé de supprimer l'étape renvoie du formulaire à la suite de l'autentification manager

    Ce que j'aurais comme idée serait donc de récupérer la méthode appelante. Dans l'exemple (ici le sumbit)
    et de la sauvegarder avant de la trigger une fois l'autentification confirmé.
    Cependant j'hésites à faire cela car si j'ai d'autres événements écoutant avec le même système cela pourrait créer des "effets de bord" qui ne serraient pas très marrant et fun à débug
    L'autre option que j'envisagerais serait de mettre le système en attente par exemple après la ligne call_manager() et de créer une écoute d'un trigger (ex. continue) et de continuer lors du catch de l'event.

    qu'en pensez vous
    Merci d'avance pour vos idées

  2. #2
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 239
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 239
    Points : 15 537
    Points
    15 537
    Par défaut
    si j'ai bien compris, vous avez un formulaire où l'utilisateur saisie ces données qui peut être rempli sans être connecté ?
    et donc si l'utilisateur n'est pas connecté, il doit d'abord utiliser un 2e formulaire pour se connecter ?

  3. #3
    Membre averti
    Avatar de Sparky95
    Homme Profil pro
    Full Stack (web) developer
    Inscrit en
    Décembre 2016
    Messages
    379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : Belgique

    Informations professionnelles :
    Activité : Full Stack (web) developer
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2016
    Messages : 379
    Points : 358
    Points
    358
    Par défaut
    Non l'utilisateur est déjà connecté et lors de certaines manipulations, il doit appeler un responsable qui lui donc doit s'autentifier via un scan de badge.
    Je gère donc "la session manager" avec un clé unique que j'enregistre dans la db.
    cette clé je l'enregistre également dans une variable global en js µvar.key.

    Jusqu'à maintenant lors d'actions seulement accessibles par le responsable, je contrôlais que la personne était un responsable (is_manager) et dans le cas ou elle ne l'était pas je demandais l'autentification de celle si et je terminais l'action via un e.preventDefault() et un return false du coup une fois authentifié, elle devait refaire manuellement la dernière action.

    ex.
    clicker sur un bouton enclanche l'ouverture d'une modal que si le responsable est présent
    et dans le cas contraire une modal est ouverte demandant l'autentification du responsable
    et jusqu'à maintenant, une fois authentifié, celle si devait donc re-clicker sur le bouton
    Il m'est aujourd'hui demander de ne plus devoir répéter l'action (donc dans notre exemple, le manager une fois connecté n'aurait pas à re-clicker)

  4. #4
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 239
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 239
    Points : 15 537
    Points
    15 537
    Par défaut
    une fois que le responsable est connecté, je pense que vous pouvez appeler $("#form").submit();.
    si d'autre gestionnaires d'évènements se sont accrochés à ce formulaire, ils seront appelés comme si le formulaire avait été envoyé manuellement donc je ne pense pas que cela puisse poser problème.

  5. #5
    Membre averti
    Avatar de Sparky95
    Homme Profil pro
    Full Stack (web) developer
    Inscrit en
    Décembre 2016
    Messages
    379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : Belgique

    Informations professionnelles :
    Activité : Full Stack (web) developer
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2016
    Messages : 379
    Points : 358
    Points
    358
    Par défaut
    Oui dans ce cas si car c'est un petit example simple.
    Mais cette fonction est prévue pour être appelé par n'import quel code qui à besoin du manager.
    Du coup je ne me retournes pas toujours fasses à un formulaire.

    Actuellement j'ai
    - des submits de formulaire
    - des changements de layout
    - des refresh de tableaux
    - des accès à certains inputs

    AJOUT:
    Citation Envoyé par mathieu Voir le message
    si d'autre gestionnaires d'évènements se sont accrochés à ce formulaire, ils seront appelés comme si le formulaire avait été envoyé manuellement donc je ne pense pas que cela puisse poser problème.
    C'est ce que je me suis dis également et cela pourrait du coup produire des effets indésirables et inattendu avec du coup des risques d'effets de bord.

Discussions similaires

  1. Réponses: 8
    Dernier message: 15/09/2009, 18h03
  2. Attendre un changement avant de continuer
    Par diffy dans le forum VB.NET
    Réponses: 4
    Dernier message: 27/06/2008, 14h35
  3. Attendre qu'une fenetre soit fermée avant de continuer.
    Par parp1 dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 29/05/2007, 17h43
  4. [FLASH MX2004] [AS2] Attendre la fin de chargement d'un fichier avant de continuer.
    Par Demco dans le forum ActionScript 1 & ActionScript 2
    Réponses: 6
    Dernier message: 01/03/2007, 15h13
  5. attendre la fin de chargement d'une page avant de continuer le script
    Par jibouze dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 07/06/2006, 09h50

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