Partage
  • Partager sur Facebook
  • Partager sur Twitter

Créer des cards en JS aprés une requete ajax

    3 avril 2024 à 23:13:03

    Bonjour à tous,

    Je me permets de poster car je rencontre des difficultés pour ajouter des cards à partir de Javascript avec append

    Voici mon code:

    // Mise à jour recherche association
        $("#rech-assoc").submit(function (e) { 
        e.preventDefault();
        let nom = $("#recher").val();
        console.log('La recherche est : ' + nom);
            $.ajax({
                type: "post",
                url: "ajax/recherche-assoc.php",
                data: {nom: nom},
                dataType: "JSON",
            })
            .done(function(ret){
                console.table(ret);
                let cnt = 1;
                let row = 1
                for(var i = 0; i <= ret.length; i++ ){
                    
                    if(cnt == 4){cnt = 1;}
    
                    if(cnt == 1){
                        $("#re").append(
                            `<div class="row" id="cnt-${row}">`
                        );
                        row++
                    }
                    
    
                    $("#cnt-"+row).append(
                        `<div class="col-md-4 col-12">
                            <div class="card">
                                <div class="card p-2" id="card-${ret[i]['idf']}">
                                    <h4 class="text-center">${ret[i]['designation']}</h4>
                                    <br>
                                    <p class=""></p>
                                    <form class="row p-3" action="foyer-consult.php" method="post">
                                        <input type="hidden" name="rf" value="" id="rf">
                                        <button class="btn btn-success mb-2" id="add">Consulter</button>
                                    </form>
                                </div>
                            </div>
                        </div>`
                    );
    
    
                    if(cnt == 3){
                        $('#re').append('</div>');
                    }
    
                    cnt++;
                }
    
                if(cnt < 3 || cnt == 4){
                    $('#re').append('</div>');
                }
            })
            .fail(function(ret){
                console.log(ret.responseText);
            })
        });

    L'erreur qui m'est remon té est :

    Uncaught TypeError: ret[i] is undefined

    Merci d'avance pour votre éclaircissement.

    • Partager sur Facebook
    • Partager sur Twitter
      5 avril 2024 à 10:02:48

      Hello, 

      Peut-être une piste :

      for(var i = 0; i <= ret.length; i++ ){ // ça ne pourra jamais marcher : tant que i n'est pas inf OU égal (<=) à 3 il s'incrémente : par exemple :
      var ret = ["un", "deux", "trois"]; //=> ret.length = 3 
      
      
      i[0] = "un"
      
      i[1] = "deux"
      
      i[2] = "trois"
      
      i[3] = undefined // longueur de ret
      
      for(var i = 0; i < ret.length; i++ ){ //boucle normale, elle s'arrêtera à 2 => "trois" 



      -
      Edité par GBNet 5 avril 2024 à 10:04:27

      • Partager sur Facebook
      • Partager sur Twitter

      Créer des cards en JS aprés une requete ajax

      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
      • Editeur
      • Markdown