Así que tengo una tabla que extrae información de una base de datos y me preguntaba cómo podría actualizar su información sin tener que volver a cargar toda la página.Actualizar una tabla con jQuery/Ajax cada 5 segundos
Respuesta
Aquí hay otra opción para que usted use. Esta solución está utilizando un IIFE que se prefiere sobre setInterval. Puede leer más sobre IIFE en el enlace de arriba.
javascript:
var $results = $('#results'),
loadInterval = 5000;
(function loader() {
$.get('script.php', function(html){
$results.hide(200, function() {
$results.empty();
$results.html(html);
$results.show(200, function() {
setTimeout(loader, loadInterval);
});
});
});
})();
HTML:
<div id="results"></div>
Hola, pero en realidad no conozco la función para actualizar una tabla. –
@Etienne Dupuis Creo que da un buen ejemplo de cómo obtener los datos. –
+1 yo entonces: P hah! –
Usted debe tener una página que devuelve la información y extraer datos usando AJAX/jQuery.
<div class="result"></div>
setInterval(function() {
$.get('test.php', function(data) {
$('.result').html(data);
});
}, 5000);
El "problema" con esta solución es que no inicia el temporizador una vez que se completa la carga. En otras palabras, si su solicitud tarda más de 5 segundos en regresar, tendrá superposición de solicitudes ajax. Sugiero usar '.abort()' antes de iniciar una nueva llamada. – Dutchie432
setTimeout(function(){
jqueryFunction(Args);
},100);
va a funcionar ...
100 = 100 milisegundos
Tendrá una página getTable.php
que muestra su mesa, y nada más: No hay encabezados, pies de página, etc.
PHP (getTable.php) - esto puede ser cualquier código del lado del servidor (ASP, hTML, etc ..)
<?php
echo '<table><tr><td>TEST</td></tr></table>';
?>
Luego, en sus JS, puede actualizar fácilmente la tabla mediante la load()
método:
HTML
<div id="tableHolder"></div>
JS
<script type="text/javascript">
$(document).ready(function(){
refreshTable();
});
function refreshTable(){
$('#tableHolder').load('getTable.php', function(){
setTimeout(refreshTable, 5000);
});
}
</script>
Muchas gracias, incluso usable cuando uso ASP (como era mi caso) – ArcDare
¡Feliz de ayudar! – Dutchie432
Buena respuesta. Para ayudar a aclarar, 1000 ms = 1 segundo. Entonces: setTimeout (refreshTable, 5000); - actualiza la tabla cada 5 segundos. –
Uso ajax , el siguiente ejemplo está en jQuery:
$(function() {
var prevAjaxReturned = true;
var xhr = null;
setInterval(function() {
if(prevAjaxReturned) {
prevAjaxReturned = false;
} else if(xhr) {
xhr.abort();
}
xhr = $.ajax({
type: "GET",
data: "v1="+v1+"&v2="+v2,
url: "location/of/server/script.php",
success: function(html) {
// html is a string of all output of the server script.
$("#element").html(html);
prevAjaxReturned = true;
}
});
}, 5000);
});
La función de éxito asume que el script del servidor genera el html que desea reemplazar en el elemento con id 'element'.
El "problema" con esta solución es que no inicia el temporizador una vez que se realiza la carga. En otras palabras, si su solicitud tarda más de 5 segundos en regresar, tendrá superposición de solicitudes ajax. Sugiero usar .abort() antes de iniciar una nueva llamada. – Dutchie432
@Dutchie correcto. He actualizado la respuesta para reflejar una solución más sólida. OP y otros interesados deben leer esta respuesta: http://stackoverflow.com/a/446626/697370 para conocer las limitaciones de 'abort' –
O bien, puede usar mi respuesta a continuación, que inicia el temporizador automático una vez que termina el ajax. – Dutchie432
las siguientes obras con jQuery DataTables 1,10
`var tableName;
//Set AJAX Refresh interval.
$(function() {
setReloadInterval(10); //Refresh every 10 seconds.
}
//Because function takes seconds we * 1000 to convert seconds to milliseconds.
function setReloadInterval(reloadTime) {
if(reloadTime > 0)
internalId = setInterval("reloadTable()", (reloadTime * 1000);
}
//Auto Refresh JQuery DataTable
function reloadTable() {
tableName.ajax.reload();
}
//Table defined...
$(document).ready(function() {
tableName = $('#tableName').DataTable({
"sAjaxSource": "/someUrl",
});`
- 1. Trabajos cron: para ejecutar cada 5 segundos
- 2. ¿Cómo volver a cargar img cada 5 segundos con javascript?
- 3. Jquery: realice una acción cada dos segundos
- 4. ¿Cómo esperar 5 segundos con jQuery?
- 5. cómo programar llamadas ajax cada N segundos?
- 6. ¿Cómo realizar una acción cada 5 resultados?
- 7. Llamar a una función cada 60 segundos
- 8. Repetir una función cada pocos segundos
- 9. intente abrir una página cada 10 segundos
- 10. SQL - Actualizar una tabla con un campo de otra tabla
- 11. Tooltip Balloon Desaparece después de 5 segundos
- 12. PHP, espere 5 segundos antes de ejecutar una acción
- 13. ¿Cómo actualizo el navegador cada X segundos con javascript?
- 14. Java Thread cada X segundos
- 15. Android Cambiar la imagen cada 10 segundos
- 16. Actualizar una tabla MySQL con valores de otra
- 17. Actualizar una tabla completa sin bloquear en MySQL
- 18. Ejecutar la función especificada cada X segundos
- 19. Crontab cada 5 minutos
- 20. jQuery Solicitud Ajax cada 30 segundos
- 21. jQuery eliminar .Append después de 5 segundos
- 22. Jquery desactivar enlace durante 5 segundos
- 23. eliminar nuevo div después de 5 segundos
- 24. ¿Cómo retraso una llamada de función durante 5 segundos?
- 25. cómo mostrar una actividad automáticamente después de 5 segundos
- 26. Haga algo cada 5 segundos y el código para detenerlo. (JQuery)
- 27. Cambiar el color de la notificación de LED cada 5 segundos
- 28. Creando una vista materializada que se renueva cada 5 minutos
- 29. ¿Por qué mi servicio no funciona en Android? (Solo quiero registrar algo cada 5 segundos)
- 30. Llamar a un WebMethod usando jQueryAjax "GET"
La respuesta está en la pregunta: añadir un script volver a cargar los datos de la tabla utilizando AJAX cada 5 segundos. Google para la función de JavaScript setTimeout. –
¿Cómo se tiene la configuración de back-end? ¿Estás planeando invocar un script como 'getData.php? StartID = 1 & endID = 10' tipo de cosa? – Justin808