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 :

jquery et callback


Sujet :

jQuery

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mars 2009
    Messages : 21
    Par défaut jquery et callback
    Bonjour j'ai un problème de valeur de variable (var etat) ;j'obtiens :

    Dans pack_ajouter_ld : -1
    Dans ld_exist : 1

    alors que je voudrai
    Dans pack_ajouter_ld : 1 ou 0
    Dans ld_exist : 1 ou 0

    pack_ajouter_ld() doit être égal à ld_exist()

    Merci


    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
     
    var etat="-1";
     
     
    function pack_ajouter_ld()
    {ld_exist();
    	console.log("Dans pack_ajouter_ld : "+etat);
               if(etat=="1"){  alert("Une ld avec ce numéro existe déja.");     }
    if(etat=="0"){var sort= $('#sortable').sortable('serialize'); ajouter_ld(sort); }
     
    }
     
    function ld_exist()
    {
    un_num_ld =$("#LD").val();
    $.post("./traitement.php", {ld_exist:un_num_ld}, function(data){ etat=data;  console.log("Dans ld_exist : "+etat); 
      }
          );
    }
     
     
    ////

  2. #2
    Rédacteur
    Avatar de marcha
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2003
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 571
    Par défaut
    Salut,

    La requête Ajax $.post("./traitement.php" ... n'est pas "bloquante", cela signifie
    que ta callback function(data){...} sera appelée après ton test if(etat=="1") ...

    dans ton code actuel tu test etat avant même que la variable ne soit modifiée
    par le retour de la requête

    place des console.log un peu partout et tu pourra observer l'ordre d'exécution
    dans le temps.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mars 2009
    Messages : 21
    Par défaut synchrone or no synchrone ?
    Dois-je effectuer une requête synchrone?

    Peut-être utiliser que je dosi utiliser $.ajax et exécuter mon test sur "etat" onsuccess?

    Qu' en pensez-vous???

    Merci

  4. #4
    Rédacteur
    Avatar de marcha
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2003
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 571
    Par défaut
    Salut,

    Il te faut restructurer un peu, par exemple dans ce goût là:

    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
     
    function pack_ajouter_ld()
    {
      ld_exist(function(etat) { 
        console.log("Dans pack_ajouter_ld : "+etat);
        if(etat=="1"){  alert("Une ld avec ce numéro existe déja.");     }
        if(etat=="0"){var sort= $('#sortable').sortable('serialize'); ajouter_ld(sort); }
      });
    }
     
    function ld_exist(callback)
    {
      un_num_ld =$("#LD").val();
      $.post("./traitement.php", {ld_exist:un_num_ld}, function(data) { 
        etat=data;    
        console.log("Dans ld_exist : "+etat); 
        callback(etat);
      });
    }

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mars 2009
    Messages : 21
    Par défaut ok mais pouquoi???
    Merci beaucoup ça marche très bien !!

    Mais je ne comprends pas le:




  6. #6
    Rédacteur
    Avatar de marcha
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2003
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 571
    Par défaut
    callback est une variable qui est une référence à une fonction anonyme
    passée en paramètre à la fonction ld_exist

    la notation callback(etat) permet d'appeler cette fonction en passant un
    paramètre.

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

Discussions similaires

  1. [AJAX] Temporisation ajax/jquery sans callback ?
    Par guyllo dans le forum AJAX
    Réponses: 3
    Dernier message: 23/03/2012, 21h54
  2. JQuery fonction de callback non appelée
    Par fly85 dans le forum jQuery
    Réponses: 7
    Dernier message: 15/10/2010, 23h41
  3. callback (before, complete) avec AjaxLink (Jquery)
    Par __fabrice dans le forum Autres composants
    Réponses: 0
    Dernier message: 19/06/2010, 15h35
  4. Jquery, this et callback.
    Par Frackher dans le forum jQuery
    Réponses: 6
    Dernier message: 19/11/2009, 11h45

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