Problemas realizando um scroll infinito com AJAX

  • Autor Autor JetLagFox
  • Data de início Data de início
Tradução em andamento: em alguns minutos este tópico estará em português. Por enquanto, o conteúdo está no original em espanhol. Ver original
J

JetLagFox

Gamma
Usuário com poucas negociações! Use sempre o saldo do ForoBeta!
Estoy intentando hacer funcionar un scroll infinito para una sección de noticias. Lo que quiero es que al llegar a cierto punto del scroll se me añada otro bloque de noticias, si el usuario llega al final del scroll se vuelva a añadir otro. Así hasta que ya no haya más noticias que mostrar.

Uso el siguiente script:

Inserir CODE, HTML ou PHP:
<script language="JavaScript">

var paginacion = 2
window.addEventListener("scroll", function(){
    console.log(scrollY);
    var altura_header = $("header").height();
    var altura_bloque_anuncio = $("#anuncio_primero_home").height();
    var altura_div_noticias = $(".cont-princ").height();
    var altura_limite = altura_header + altura_bloque_anuncio + altura_div_noticias;
    //OJO PORQUE NO SÉ SI FUNCIONA CON LA RESOLUCIÓN DE PANTALLA, IGUAL HABRÍA QUE SACAR LA ALTURA DE SU NAVEGADOR
    var altura_pantalla_usuario = screen.height;
    var altura_nagegador = $(window).height();
    var altura_nagegador_2 = $(document).height()


    console.log(this.scrollY + altura_pantalla_usuario);
    //tendrá que buscar si hay más noticias cuando lo que baje en pixeles el usuario con el scroll, más la altura de su pantalla, supere el la variable altura_limite

    if (this.scrollY + altura_pantalla_usuario >= altura_limite){
        $.ajax ({
          type: 'POST',
          url: '<?php echo $ruta ?>proces_noticias.php',
          data: { "paginacion": paginacion},
          success:function(datos){
            $("#mas_noticias").html(datos);
          }
        });

        paginacion = paginacion + 1;
    }
    console.log("Esto es paginacion:" + paginacion )
    console.log("Esto es la altura limite:" + altura_limite ) 

}, false);

</script>
Y muestro los datos en un div que de un inicio está vacío:

<div id="mas_noticias" style="width:100%;">

</div>

Al cargar la página y hacer scroll hacia abajo funciona bien, se me carga otro bloque de noticias, justo las siguientes, pero si sigo haciendo scroll, no se me carga otro bloque nuevo a continuación, se me actualiza el div anterior con las noticias.

¿Cómo puedo hacer para que en vez de actualizarme el div donde se muestran por AJAX los resultados se me añada otro? ¿Debería usar mejor un class en vez de un id por eso de que los id no se pueden repetir?
 
Foi útil? Participe da conversa

Com sua conta grátis você pode responder, mandar mensagem privada ao autor e comprar com Saldo retido: o pagamento é liberado quando você recebe o combinado.

Leva 30 segundos · você volta a este tópico ao terminar
Estás usando $("#mas_noticias").html(datos);
Por lo que siempre remplazará lo que se encuentre en #mas_noticias por lo que se obtenga con ajax

Prueba usando append:
Inserir CODE, HTML ou PHP:
$("#mas_noticias").append(datos);
 
Voltar
Topo