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 :

YUI3 + Ajax avec boucle FOR [Yahoo UI]


Sujet :

Bibliothèques & Frameworks

  1. #1
    Membre régulier Avatar de razorlok
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    211
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 211
    Points : 111
    Points
    111
    Par défaut YUI3 + Ajax avec boucle FOR
    Bonjour,

    je dois adapter un script jQuery qui fonctionne en YUI3, affichant le résultat d'une requête en Ajax au clic sur un lien. Le résultat varie selon le lien cliqué.
    Mon script YUI ne me retourne aucun résultat, je n'arrive pas à bien traduire mon jQuery en YUI3...

    script jQuery valide :
    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
    <script src="http://code.jquery.com/jquery-latest.js" type="text/javascript"></script>
    <script languid="javascript" type="text/javascript">
    $(document).ready(function() { 
      for (var i=1; i<4; i++) {	
        $("#bouton" + i).click(display(i));
      }
    });
    function display(j) {
      return function() {
        ajaxFunction(j);
      };
    }
    function ajaxFunction(j){
    var id = document.getElementById("bouton" + j).className;
    $.ajax(
       {
          type: "GET",
          url: "requete.php",
          data: "id="+id,
          success: function (msg) {
                $("#thema" + j).html(msg);
    	}
       });
    };
    </script>
     
    <a href="#" id="bouton1" class="(Test 1)">Maths</a>
    <div id="thema1"></div>
    <a href="#" id="bouton2" class="(Test 2)">Culture</a>
    <div id="thema2"></div>
    script YUI3 :
    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
    <script src="http://yui.yahooapis.com/3.8.1/build/yui/yui-min.js"></script>
    <script>
    YUI().use("node", function (Y) { 
      for (var i=1; i<4; i++) {	
        Y.one("#bouton" + i).on('click', function ajaxFunction(i){
     
    var id = document.getElementById("bouton" + i).className;
    Y.io('requete.php',
       {
          type: "GET",
          data: "id="+id,
          success: function (msg) {
                Y.one("#thema" + i).setHTML(msg);
    	}
       });
     
    });
      };
    });
    </script>
     
    <a href="#" id="bouton1" class="(Test 1)">Maths</a>
    <div id="thema1"></div>
    <a href="#" id="bouton2" class="(Test 2)">Culture</a>
    <div id="thema2"></div>
    Wear some golf shoes, otherwise we'll never get out of this place alive.

  2. #2
    Expert éminent sénior

    Avatar de vermine
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    6 582
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 6 582
    Points : 79 912
    Points
    79 912
    Par défaut
    Bonjour,

    Quand vous faites ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Y.one("#bouton" + i).on('click', function ajaxFunction(i){
    Êtes-vous sûr de bien récupérer la valeur de i ?

  3. #3
    Membre régulier Avatar de razorlok
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    211
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 211
    Points : 111
    Points
    111
    Par défaut
    Non, en effet, ce code ne fonctionnait pas du tout. Je l'ai donc revu, et j'arrive bien à récupérer la bonne valeur de i (test avec alert (id); qui me retourne le contenu de class comme voulu).

    Seulement, mon appel Ajax semble ne pas fonctionner, bien que la variable id soit bien renseignée. Voici le 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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    <script src="http://yui.yahooapis.com/3.8.1/build/yui/yui-min.js"></script>
    <script>
    YUI().use('node', function (Y) { 
        for (var i=1; i<4; i++) {								
    	var button = Y.one('.bouton' + i);						
            button.on('click', function (e){	
     
    	var id = e.target.get('id');
     
    	Y.io('requete.php', {
                  type: 'GET',
                  data: 'id='+id,
                  success: function (id, msg) {
    	           alert ('success !');
    	      }
            });	
    });
    };
    });
    </script>
     
    <a href="#" id="(Test 1)" class="bouton1"> Bouton 1</a>
    <div id="thema1"></div>
    <br><br>
     
    <a href="#" id="FAQ" class="bouton2"> Bouton 2</a>
    <div id="thema2"></div>
    Wear some golf shoes, otherwise we'll never get out of this place alive.

  4. #4
    Expert éminent sénior

    Avatar de vermine
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    6 582
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 6 582
    Points : 79 912
    Points
    79 912
    Par défaut
    Du côté de requete.php vous recevez quelque chose (en examinant "id") ?

  5. #5
    Membre régulier Avatar de razorlok
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    211
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 211
    Points : 111
    Points
    111
    Par défaut
    Avec mon script jQuery oui, requete.php me retourne les bons résultats.
    Par contre, il me faut bien passer la variable id pour la récupérer dans requete.php : $id = $_GET['id'];
    Wear some golf shoes, otherwise we'll never get out of this place alive.

  6. #6
    Expert éminent sénior

    Avatar de vermine
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    6 582
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 6 582
    Points : 79 912
    Points
    79 912
    Par défaut
    J'avoue que ce n'est pas très clair dans la documentation. Essayez peut-être ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    function onComplete(transactionId, responseObject, arg1, arg2) {
        alert ('success !');
    }
     
    Y.on('io:complete', onComplete);
     
    Y.io('requete.php', {
        type: 'GET',
        data: 'id='+id
    });
    Mais je ne suis sûr de rien.

  7. #7
    Membre régulier Avatar de razorlok
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    211
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 211
    Points : 111
    Points
    111
    Par défaut
    J'ai cherché et encore recherché dans la doc un peu bordélique de YUI et j'ai avancé un peu, en changeant l'appel de fonction au début du script, en remplaçant "node" par "io" (appel d'une fonction de type Ajax, apparemment) :

    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
    <script src="http://yui.yahooapis.com/3.8.1/build/yui/yui-min.js"></script>
    <script>
    YUI().use('io', function (Y) { 
    for (var i=1; i<4; i++) {								
    	var button = Y.one('.bouton' + i);	
        button.on('click', function (e){	
     
    	var id = e.target.get('id');
     
    	Y.io('requete.php', {
        method: 'GET',
        data: 'id='+id,
        on: {
            success: function (o) {
    			Y.one("#thema").setHTML(o);
            },
            failure: function (result) {
    			alert('failed');
            }
        }
    });
     
    });
    };
    });
    </script>
    Maintenant, au clic sur le lien, ça me retourne 0, puis 1, 2, 3, ... bref, incrémenté à l'infini à chaque clic...
    Wear some golf shoes, otherwise we'll never get out of this place alive.

  8. #8
    Expert éminent sénior

    Avatar de vermine
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    6 582
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 6 582
    Points : 79 912
    Points
    79 912
    Par défaut
    A quel niveau est-ce que ça s'incrémente ?

  9. #9
    Membre régulier Avatar de razorlok
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    211
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 211
    Points : 111
    Points
    111
    Par défaut
    C'était un problème de fonction success, en rajoutant un argument, je retourne bien les résultats voulus :

    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
     
    YUI().use("io", function (Y) { 
    for (var i=1; i<4; i++) {								
    	var button = Y.one(".bouton" + i);
     
        button.on("click", function (e){
     
    	var id = e.target.get("id");
     
    	Y.io("requete.php", {
        method: "GET",
        data: "id="+id,
        on: {
            success: function (o, res) {
    			Y.one("#thema").setHTML(res.responseText);
            }
        }
    });	
    });
    };
    });
    Maintenant y'a plus qu'à l'intégrer à Moodle... ce qui n'est pas une mince affaire !
    Wear some golf shoes, otherwise we'll never get out of this place alive.

  10. #10
    Expert éminent sénior

    Avatar de vermine
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    6 582
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 6 582
    Points : 79 912
    Points
    79 912
    Par défaut
    Ha parfait, je me demandais d'ailleurs ce que contenait le paramètre o (qui doit être l'id de la transaction).

    Courage pour la suite.

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

Discussions similaires

  1. [SQL] tri d'un resultat avec boucle for
    Par guillaumeIOB dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 11/09/2007, 14h30
  2. script avec boucle for
    Par gloglo dans le forum Langage SQL
    Réponses: 16
    Dernier message: 30/05/2007, 14h30
  3. Problème avec boucle for() et action POST
    Par Oli_Ifre dans le forum Langage
    Réponses: 4
    Dernier message: 26/04/2007, 09h52
  4. [ActionScript] Problème avec boucle 'FOR'
    Par BnA dans le forum Flash
    Réponses: 7
    Dernier message: 02/11/2006, 09h26
  5. faire plusieur declaration avec boucle for ?
    Par debutant-1 dans le forum C
    Réponses: 4
    Dernier message: 18/05/2006, 20h19

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