AJAX - Crear un carousel de bootstrap con ajax

 
Vista:
sin imagen de perfil

Crear un carousel de bootstrap con ajax

Publicado por BC (1 intervención) el 24/01/2019 17:11:34
Tengo un simple carousel de bootstrap en mi página principal:
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
33
34
35
36
37
38
39
40
<!DOCTYPE html>
    <html lang="es">
        <head>
            <meta charset="UTF-8">
            <title>Carousel with ajax</title>
            <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
            <link href="https://stackpath.bootstrapcdn.com/bootstrap/4.2.1/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-GJzZqFGwb1QTTN6wy59ffF1BuGJpLSa9DkKMp0DgiMDm4iYMj70gZWKYbI706tWS" crossorigin="anonymous">
            <script src="https://code.jquery.com/jquery-3.3.1.js" integrity="sha256-2Kok7MbOyxpgUVvAk/HJ2jigOSYS2auK4Pfzbm7uH60=" crossorigin="anonymous"></script>
            <script type="text/javascript" src="js/ajaxCarousel.js"></script>
        </head>
        <body>
            <div class="container">
                <h2>Carousel con ajax</h2>
                <div class="row">
                    <!-- TIRAR BOOTSTRAP CAROUSEL -->
                    <a href="imagen.php" class="modalImagen" data-toggle="modal" data-var="images/image/">
                        <img class="img-fluid" src="imagen.png" alt="" style="width:20%">
                    </a>
                    <!-- BOOTSTRAP CAROUSEL -->
                    <div id="carousel" class="carousel slide" data-ride="carousel">
                        <!-- Indicators -->
                        <ol class="carousel-indicators"></ol>
                        <!-- Wrapper for slides -->
                        <div class="carousel-inner"></div>
                        <!-- Controls -->
                        <a class="carousel-control-prev" href="#demo" data-slide="prev">
                            <span class="carousel-control-prev-icon"></span>
                        </a>
                        <a class="carousel-control-next" href="#demo" data-slide="next">
                            <span class="carousel-control-next-icon"></span>
                        </a>
                    </div>
                    <!-- CLOSE BOOTSTRAP CAROUSEL -->
                </div>
            </div>
            <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.2.1/js/bootstrap.min.js" integrity="sha384-B0UglyR+jN6CkvvICOB2joaf5I4l3gm9GU6Hc1og6Ls7i6U/mkkaduKaBhlAXv9k" crossorigin="anonymous"></script>
            <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.2.1/js/bootstrap.bundle.min.js" integrity="sha384-zDnhMsjVZfS3hiP7oCBRmfjkQC4fzxVxFhBx8Hkz2aZX8gEvA/jsP3eXRCvzTofP" crossorigin="anonymous"></script>
            <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js"></script>
        </body>
</html>

Con href, redireciono a otra página para buscar archivos en un directorio determinado (imagen.php):
1
2
3
4
5
<?php
header('Content-Type: application/json');
$directorio = $_POST['var'];
echo json_encode (glob($directorio. '*.{png,mp4}', GLOB_BRACE));
?>

Finalmente hago una llamada a ajax para almacenar las imágenes como un array de mapas, recorrerlas con la función each y mostrarlas en el carousel
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
33
34
$(document).ready(function(){
    // ------------    CLICK EVENT    ------------
    $('.modalImagen').click(function (event) {
        event.preventDefault();
        var data = this.dataset;
        // ------------    AJAX    ------------
        $.ajax({
            url: "imagen.php",
            data: data,
            type: "POST",
            dataType: "json",
            success: function(data) {
                // ------------    ALMACENAR LAS IMAGENES COMO UN ARRAY CON MAP FUNCTION    ------------  
                var imgs = data.map(function(img) {
                    var html = "";
                    var fileExtension = img.substring(img.lastIndexOf('.'));
                    if (fileExtension == ".png") {
                        return html += '<img src="'+img+'"></img>';
                    }
                });
                // ------------    ACCEDER A LOS ELEMENTOS DEL ARRAY CON EACH FUNCTION Y MOSTRARLOS EN CAROUSEL    -------------
                $.each (imgs, function(i,val) {
                    $('<div class="carousel-item"><img class="d-block img-fluid" src='  + i + '></div>').appendTo('.carousel-inner');
                    $('<li data-target="#carousel" data-slide-to="' + i + '"></li>').appendTo('.carousel-indicators');
                })
                // ------------    MOSTRAR CAROUSEL    -------------
                $('#carousel').carousel();
                $('.carousel-indicators > li').first().addClass('active');
                $('.carousel-item').first().addClass('active');
 
            }
        });
    });
});

Lamentablemente el código no funciona, no muestra nada y la consola no muestra ningún error aparente. Alguien podría ayudar?
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de ScriptShow
Val: 21
Ha aumentado 1 puesto en AJAX (en relación al último mes)
Gráfica de AJAX

Crear un carousel de bootstrap con ajax

Publicado por ScriptShow (10 intervenciones) el 27/01/2019 14:08:32
Saludos,

comenzaremos asumiendo que un carousel de bootstrap y otras librerías, no tienen nada de simple, ni de ágil... No obstante, para no asustar demasiado, veremos algunos ejemplos:

https://www.cssscript.com/tag/carousel/

https://thenewcode.com/986/Web-Developer-Reading-List-Galleries

Otras alternativas posibles:

https://www.w3schools.com/howto/howto_js_slideshow.asp

Navega por el Menú de la izquierda, para ver más.

Espero sea útil.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar