1
resposta

Como fazer paginação de uma página com vários dados?

Pessoal, tudo bem? eu estou com dúvidas para fazer a paginação de alguns dados que aparecem na tela. Usei o AJAX em javascript para criar uma página com personagens da marvel. A questão é que eu preciso colocar, no máximo, 6 dados por página, e eu queria saber se estou muito longe disso. O código (em javascript) segue abaixo:

var marvel = {
    render: function(){

        var url = "http://gateway.marvel.com/v1/public/characters?ts=1&apikey=c2caa99f3730bd6365457831d904eead&hash=f6adc9cb259ddcea9931e28841a974ee";
        var message = document.getElementById("message");
        var footer = document.getElementById("footer");
        var marvelContainer = document.getElementById("marvel-container");

        $.ajax({
            url: url,
            type: "GET", 
            beforeSend: function(){
                message.innerHTML = "Carregando...";
            },

            complete: function(){
                message.innerHTML = "carregamento Completo!";
            },
            success: function(data){
                //console.log("Chegou aqui...");
                footer.innerHTML = data.attributionHTML;
                var string = "";
                string +="<div class='row'>";
                var i=0;
                for (i=0; i<data.data.results.length;i++){
                    var element = data.data.results[i];

                    string += "<div class='col-md-4'>";
                    string += "<a href='"+element.urls[1].url+"' target='_blank'>";
                    string +="     <img src='"+element.thumbnail.path+"/portrait_fantastic."+element.thumbnail.extension+"' />"; 
                    string += "</a>"
                    string += "<h3>" +element.name+ "</h3>";
                    string += "</div>";

                    if((i+1) % 3 == 0){
                        string += "</div>";
                        string += "<div class='row'>";
                    }
                }

                marvelContainer.innerHTML = string;

            },
            error: function(){
                message.innerHTML = "We are sorry!";
            }
        });
    }
};
marvel.render();

Obrigado
1 resposta

Fala ai Paulo, tudo bem? Isso pode ser feito de N maneiras.

A mais simples é que esse controle esteja da API, ou seja, uma vez que você bateu na API e pegou os dados da primeira página, ela por si já vai te devolver qual o tamanho total de páginas e qual página você está.

Sendo assim, você consegue criar os botões de 1,2,3,4,5, etc...

Quando clicar em um botão para buscar os dados daquela página, você manda a requisição para a API passando o número da página, assim o processo irá se repetir, ela vai devolver os itens, a página atual e o total de páginas.

Caso você queira fazer no front, também existem N jeitos, pode ser através de paginações com números ou infinite scroll.

Tanto para a paginação ou infinite scroll você pode utilizar a função slice do array e ir "cortando" ele.

Espero ter ajudado.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software