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 fin d'exécution de la fonction Ajax


Sujet :

jQuery

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 54
    Par défaut Attendre la fin d'exécution de la fonction Ajax
    J'ai une focntion contenant de l'ajax et j'aimerai sortir de la fonction lors du resultat de l'ajax.
    Mon code :
    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
    function ma_fonction {
    $.ajax({
                url: "test.php",
                type: "POST",
                data: {
                    param1: "pouet",
                    param2: "truc"
                },
                success: function(response) {
                    var result = $.trim(response);
     
                    //divers traitements
     
                    //sortie
                }
            });
    }
    L'intérêt est dde sortir au niveau du commentaire "sortie" de façon à être certain que l'ajax soit terminé au moment où on sort de la fonction.

    C'est peut être bête mais là je tourne en rond

    une idée ?

  2. #2
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 513
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 513
    Par défaut
    edit : tu as oublié les parenthèses juste après ma_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
     
    function ma_fonction() {
    $.ajax({
                url: "test.php",
                type: "POST",
                data: {
                    param1: "pouet",
                    param2: "truc"
                },
                success: function(response) {
                    var result = $.trim(response);
     
                    //divers traitements
     
                    //sortie
                }
            })
            .done(function(d){
                console.log("done :"+d);
               //ajax s'est terminé avec succès
              // ton code ici ...
            });
    }

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 54
    Par défaut
    Merci pour l'idée mais comme le "done" est une fonction, si je fait un "return", ça ne sort pas de la fonction mère mais de la fonction du "done"

  4. #4
    Membre expérimenté
    Homme Profil pro
    Collégien
    Inscrit en
    Mai 2012
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Collégien
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2012
    Messages : 116
    Par défaut
    Bonjour, peut être qu'une bonne idée serait d'utiliser le mode synchrone de ajax, ici tu n'as pas d'intérêt d'être asynchrone vu que tu veux attendre que la requête soit finis


    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
    ma function = function(){
    var myresut = "";
    $.ajax({
        url: "",
        type: "POST",
        async: false, // Mode synchrone
        data: ({}),
         success : function(){  
     
             myresut = "OK"
         }
    });
     
    return myresut 
     
    }

  5. #5
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    Les focntion sont exécutées en bulle, et chronologiquement le return en fin de fonction ne donnera pas le résultat escompté car la variable ne sera pas modifié par le success avant le return ...

    Essaye un return de l'ajax
    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
     
    function ma_fonction() {
    return  $.ajax({
                url: "test.php",
                type: "POST",
                data: {
                    param1: "pouet",
                    param2: "truc"
                },
                success: function(response) {
                    var result = $.trim(response);
     
                    //divers traitements
     
                    //sortie
                }
            })
            .done(function(d){
                console.log("done :"+d);
               //ajax s'est terminé avec succès
              // ton code ici ...
            return "foo";
            });
    }
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  6. #6
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    sauf erreur, on ne mélange pas .success et .done : jQuery.ajax() - exemples

    Deprecation Notice:
    The jqXHR.success(), jqXHR.error(), and jqXHR.complete() callbacks are removed as of jQuery 3.0.
    You can use jqXHR.done(), jqXHR.fail(), and jqXHR.always() instead.

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