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

Bibliothèques & Frameworks Discussion :

Ajax.request => Plusieurs requêtes à la suite [Prototype]


Sujet :

Bibliothèques & Frameworks

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 277
    Par défaut Ajax.request => Plusieurs requêtes à la suite
    Bonjour à tous,

    Je souhaiterais savoir s'il est possible d'executer plusieurs ajax.request les unes à la suite des autres.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    new Ajax.Request(URL , 
    { 
    	method : 'get' , 
    	onComplete: test
    })			
     
    new Ajax.Request(URL2 , 
    { 
    	method : 'get' , 
    	onComplete: test2
    })
    Pour l'instant mes requêtes s'executent en même. Comment changer cette situation ?

  2. #2
    Membre éprouvé
    Inscrit en
    Septembre 2007
    Messages
    169
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 169
    Par défaut
    Dans ta fonction test, tu fais appel à ta 2eme request.
    Ex :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    function test () {
      // tes trucs
     
      new Ajax.Request(URL2 , 
    { 
    	method : 'get' , 
    	onComplete: test2
    })
     
    }

  3. #3
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 277
    Par défaut
    J'espérais une autre réponse. J'avais bien cette solution mais elle ne me convient pas.

    Si par exemple j'ai 10 fonctions "test" et que selon les évènements (chargement de la page, clique etc) je souhaite lancer dans un cas les fonctions test 1 puis 2 et 7 et dans un autre cas 3 puis 4 puis 6 puis 3, cela devient vite le bordel.

    Il n'est pas possible de faire des fonctions "génériques" (test dans cet exemple) et de créer ensuite des fonction (action1, action2 etc) qui font appel à ces fonctions test sans devoir les modifier?

  4. #4
    Membre éprouvé
    Inscrit en
    Septembre 2007
    Messages
    169
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 169
    Par défaut
    Hum dans ce cas tu pourrais essayer avec une classe qui garde un tableau des fonctions a appelé, et tu apel sa méthode de chargement qui ressemblerai plus ou moins à ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    function load ()
    {
      if (Ajax.activeRequestCount != 0)
          setTimeout("load()",100));
      else
      {
         tab[0]();
         tab.remove(0);
         if (tab.length != 0)
            load();
      }
    }

  5. #5
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 277
    Par défaut
    Je comprend bien ta fonction pour la première partie => si une requête est déja en cours, on relance la fonction load() jusqu'à ce que le nombre de requete soit égal à zéro.
    Cependant j'ai du mal à comprendre la deuxième partie...

  6. #6
    Membre éprouvé
    Inscrit en
    Septembre 2007
    Messages
    169
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 169
    Par défaut
    Oui excuse moi, je l'ai écris un peu rapidement. tab est en fait this.tab. Il correspond au tableau de fonctions que tu auras préalablement remplis dans ta classe avec la liste des fonctions à appeler, dans l'ordre.
    Donc ta classe à un attribut tab de type tableaux de fonctions, et une méthode load.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    this.tab[0](); // on éxecute la fonction en 1ere position du tableau
    this.tab.remove(0); // on retire la 1ere fonction du tableau(syntaxe à retrouver, je m'en rappelle plus
    if (this.tab.length != 0) // s'il reste encore des fonctions à appeler
    this.load(); // on rapelle la 1ere fonction pour lancer des qu'elle sera prete la fonction suivante.
    Plutot que de supprimer les fonctions du tableaux, tu peux aussi travailler avec un compte qui te dis quelle fonction tu dois éxécuter, et tant que ton compteur est pas plus grand que la taille du tableau, tu continues.

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

Discussions similaires

  1. [Prototype] Ajax.Request et onSuccess : appel de fonction avec plusieurs arguments
    Par gregbond dans le forum Bibliothèques & Frameworks
    Réponses: 3
    Dernier message: 18/10/2012, 17h00
  2. Exécuter plusieurs requêtes à la suite
    Par FrenchFrogger dans le forum Sql*Plus
    Réponses: 2
    Dernier message: 14/10/2008, 19h16
  3. [AJAX] Enchainer plusieurs requêtes avec Ajax
    Par Bobtop dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 01/08/2006, 08h13
  4. plusieurs requêtes à la suite ça ne marche pas
    Par zouhenlai dans le forum Access
    Réponses: 10
    Dernier message: 30/06/2006, 17h02
  5. Réponses: 12
    Dernier message: 30/12/2005, 11h55

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