Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

186
Vistas
Extracto de la base de datos Ajax: oculta la carga más cuando se cargan todos los elementos

Estoy recuperando datos de una base de datos mysql, 5 elementos cada vez.

 $query = $pdo->prepare("SELECT * FROM names WHERE id < ? ORDER BY id DESC LIMIT 5"); $query->execute([$_POST["id"]]); while($row = $query -> fetch()) { echo "<div id="$row["id"].">".$row["name"]."</div>"; });

El siguiente javascript está recuperando datos de/a través de la consulta mysql anterior. Estoy pasando por la última identificación de cada div y el sql solo está tomando las identificaciones más pequeñas/antiguas para agregarlas a continuación.

 function request(id) { var data1 = "id=" + id; $.ajax({ type: "POST", url: "https://example.com/api", data: data1, cache: false, success: function(html) { $(".div").append(html); }, error: function(XHR){ } }); }; request(); $(document).on("click",".more",function(){ var id = $(".div").children( ":last" ).attr("id"); request(id); });

¿Hay una forma limpia de marcar el último resultado dentro del bucle php para que pueda recogerlo con javascript/jquery y ocultar el botón de carga ".more"?

about 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Puede aplicar los siguientes pasos:

  • obtenga el recuento de filas en la tabla de names y guárdelo en hidden input
 $query = $pdo->prepare("SELECT COUNT(*) C FROM names"); ... <input type="hidden" value="<?= $row['C'] ?>" id="table_rows_count" />
  • crear una hidden input adicional para el valor del contador
 <input type="hidden" value="0" id="counter" />
  • crear un contenedor hidden div y almacenar nuevos elementos en él
 <div style="display:none;" id="hidden_div"></div>
  • obtener la length of children en el contenedor oculto
  • update counter
  • compare el recuento de filas y la longitud de los niños y, si son iguales, oculte el botón .more
  • claro contenedor div oculto
 ... success: function(html) { $(".div").append(html); $("#hidden_div").append(html); var len = $("#hidden_div")[0].children.length, coun = $('#counter').val(), new_counter = coun + len, table_rows = $('#table_rows_count').val(); $('#counter').val(new_counter); if (table_rows == new_counter) $('.more').css('display','none'); $("#hidden_div").html('') }, ...

Nota: la salida de su solicitud $.ajax() debe estar presente solo como una lista de etiquetas divs ( <div>...</div> ), nada más. Además, olvidó pasar un argumento a su función de primera llamada request() .

about 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda