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 :

[AJAX] Lancer une 2eme fonction dans la premiere


Sujet :

JavaScript

  1. #1
    Futur Membre du Club
    Inscrit en
    Octobre 2008
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 16
    Points : 9
    Points
    9
    Par défaut [AJAX] Lancer une 2eme fonction dans la premiere
    Je cherche à lancer une 2ème fonction AJAX à partir d'une première si une condition est respectée du style :

    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
    fonction 1()
    {
    instruction fonction 1
    si (test=vrai)
      {
      retourne resultat fonction 1
      }
    else
      {
      retourne fonction 2
      }
    }
    fonction 2()
    {
    instruction fonction 2
    }
    Car on doit pouvoir aussi lancer la fonction 2 directement, sinon j'aurais mis les instructions fonction 2 directement dans fonction 1
    j'ai essayé tout simplement un truc du style :
    fonction2(); mais ça passe pas
    ajax_fonction2() : ça passe pas nonplus
    Voila si quelqu'un peut m'aider il sera le bienvenu!

  2. #2
    Futur Membre du Club
    Inscrit en
    Octobre 2008
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 16
    Points : 9
    Points
    9
    Par défaut
    j'ai cru comprendre que c'était en mettant :
    $reponse1->call('xajax_fonction2'); dans la premiere fonction, mais ça ne marche pas!

  3. #3
    Membre expert
    Avatar de ThomasR
    Homme Profil pro
    Directeur technique
    Inscrit en
    Décembre 2007
    Messages
    2 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2 230
    Points : 3 972
    Points
    3 972
    Par défaut
    fonction2(); mais ça passe pas
    ajax_fonction2() : ça passe pas nonplus
    Bonjour, qu'entend tu par "ca ne passe pas" ? As-tu un message d'erreur ?

    Aussi, est-ce que ces fonctions existent vraiment ? Car ce n'est pas en changeant le nom que ca fonctionera. Une fonction "AJAX" n'existe pas, tu executes une fonction Javascript qui fait appel à un objet xmlhttprequest/activex.
    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
     
    function nom_fonction1(){
        var test = false;
        // instructions 
        if(test){
            return nom_fonction1();
        }
        else{
            return nom_fonction2();
        }
    }
     
    function nom_fonction2(){
        alert('Fonction2');
        return true;
    }
    Par contre fais bien attention à faire en sorte que test passe à false à un moment donné sinon tu vas boucler à l'infini et planter ton navigateur.

  4. #4
    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 : 53
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Hum... tu enclenches une récursivité hasardeuse avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    function nom_fonction1(){
        var test = false;
        // instructions 
        if(test){
            return nom_fonction1();
        }...
    Ce serait plutôt quelque chose du style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    function nom_fonction1(){
        var test = false;
        // instructions 
        if(test){
            return resultat_fonction1;
        }
        else{
            return nom_fonction2();
        }
    }
    où resultat_fonction1 est la valeur sensée être retournée par la fonction.
    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

  5. #5
    Futur Membre du Club
    Inscrit en
    Octobre 2008
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 16
    Points : 9
    Points
    9
    Par défaut
    En gros mon code ressemble à ça, j'ai zapper par mal de lignes qui ne servent à rien dans l'explication
    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
    25
    26
    27
    28
    29
    30
    31
    32
    function fonction2($dernier)
    {
    $reponse2 = new xajaxResponse();
    $type="test : ".$dernier;
    $reponse2->assign('vacan_40', 'innerHTML', $type);
    return $reponse2;
    }
     
     
    function fonction1($type_vacances)
    {
    $reponse1 = new xajaxResponse();
    $type_vacances=utf8_decode($type_vacances);
    if ($nb_reponse<10)
    {
    $reponse1->assign('vacan_50', 'innerHTML', utf8_encode($resu1));
    }
    else
    {
    $reponse1->assign('vacan_50', 'innerHTML', utf8_encode($resu1));
    $reponse1->call('xajax_fonction2($dernier)');
    }
    return $reponse1;
    }
     
     
    require_once('./xajax_core/xajax.inc.php');
    $xajax = new xajax(); //On initialise l'objet xajax
    $xajax->register(XAJAX_FUNCTION, 'fonction2');
    $xajax->register(XAJAX_FUNCTION, 'fonction1');
    $xajax->processRequest();
    $xajax->printJavascript(); /* Affiche le Javascript */
    Si je ne rajoute pas la variable $dernier dans la ligne :
    $reponse1->call('xajax_fonction2($dernier)');
    ça m'appelle bien la fonction 2, ça ça marche maintenant,mais je ne trouve pas la syntaxe pour passer des arguments à ma fonction 2

  6. #6
    Membre expert
    Avatar de ThomasR
    Homme Profil pro
    Directeur technique
    Inscrit en
    Décembre 2007
    Messages
    2 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2 230
    Points : 3 972
    Points
    3 972
    Par défaut
    Ta question serait plus approprié dans le forum PHP je pense.

    Aussi, pour passer un second argument à la fonction2, il faut qu'elle soit elle-même déclaré avec deux paramètres en entrée.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    function fonction2($dernier,$param2){...}
    Hum... tu enclenches une récursivité hasardeuse avec :
    Je dirais une récursivité tout court, elle est hasrdeuse si les instructions de test sont elles-mêmes hasardeuses.

  7. #7
    Futur Membre du Club
    Inscrit en
    Octobre 2008
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 16
    Points : 9
    Points
    9
    Par défaut
    oui bien entendu j'ai fait correspondre le nombre d'argument entre l'appel et la fonction.
    Mais j'arrive cette fois ci à passer des arguments "fixes" mais pas de variable :
    $reponse1->call('xajax_fonction2(\'0\',\'10\')');
    donc en l'occurrence j'ai 2 arguments pour ma fonction2, dans la ligne ci dessus c'est OK, mais si je met :
    $reponse1->call('xajax_fonction2($variable,\'10\')');
    là ça ne marche pas, j'ai un peu tout essayé :
    $reponse1->call('xajax_fonction2(.$variable.,\'10\')');
    $reponse1->call('xajax_fonction2('.$variable.',\'10\')');

    mais rien ne fonctionne

Discussions similaires

  1. Réponses: 4
    Dernier message: 03/02/2011, 14h59
  2. [AJAX] Lancer une 2eme fonction apres la reponse de la 1ere fonction
    Par lelapinrusse dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 03/05/2008, 18h36
  3. Comment lancer une 2eme form a partir d'un bouton
    Par Ice-tea dans le forum Delphi
    Réponses: 3
    Dernier message: 07/06/2006, 20h40
  4. lancer une commande dos dans une page ASP
    Par noznoz78 dans le forum ASP
    Réponses: 4
    Dernier message: 13/02/2006, 19h06
  5. [applet] lancer une applet mais dans une page web
    Par dzincou dans le forum Eclipse Java
    Réponses: 4
    Dernier message: 11/08/2004, 13h32

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