Página en javascript que actualice el contenido de una tabla

Tengo una página jsp, en la que quiero que cuando el usuario pulse un botón llamado actualizar, se recargue o se actualice el contenido de una capa
<div>
Dicho contenido es una tabla que se carga con datos de una consulta ala BD, la opción que se me ocurre es el mítico iframe pero la veo muy arcaica, ¿alguna idea?

1 respuesta

Respuesta
1
Sí, el Iframe es algo clásico y relativamente sencillo. Lo que tú buscas tiene un nombre y es de lo más famoso que puedes oír en estos días, AJAX.
Es relativamente fácil de comprender pero se complica a la hora de ponerlo en práctica. Por suerte tienes miles de páginas con ejemplos.
Te recomiendo, o casi es obligatorio, que incluyas en tus páginas la librería JQuery, que facilita el uso de ajax. (http://jquery.com/)
Aquí tienes un ejemplo de cómo se haría con AJAX+JQuery:
<div id="tablaBD">
</div>
// Esta función llamará mediante AJAX (en segundo plano) al servidor para pedirle la página "generaTabla.jsp", después cuando le llegue el contenido sustituirá el div "tablaBD" por lo que el servidor le ha mandado.
function reloadTable(){    
        $.get('generaTabla.jsp', function(data) {
         $("#tablaBD").html(data)
    });
    }

Después en el botón "onclick" llamas a reloadTable() y listo...
El jsp "generaTabla.jsp" debe hacer eso mismo, generar la tabla a partir de la BD que queremos en el div.
Cualquier problema me dices. Busca tutoriales por internet, hay miles de ajax. En muchos de ellos te explican cómo hacerlo directamente con las funciones que usan el "XMLHttpRequest", que es la petición en segundo plano al servidor. Pero usando jQuery es mucho más sencillo y rapido (el $. Get() de JQuery ya te hace el las peticiones en segundo plano)
Yo estoy utilizando Prototype, ¿pero por lo que me pones arriba es lo mismo que la opción del iframe..? ¿Pero me parece que voy a tirar por el iframe ya que aunque es un clásico no me quiero complicar, si tengo más tiempo, mirare la opción de hacerlo a través de Prototype, mirare que métodos tiene.
Yo pensé que igual existía alguno como esto:
                    document.getElementById('prueba').reload();
Gracias de todas formas ¡
Para recargar esa porción debes volver a consultar la tabla de la BD, y eso sólo se hace en el servidor, no en el cliente. Por eso no se puede recargar una parte del html de la manera que te gustaría. Hace falta pedírselo al servidor. Un iframe no es más que una página dentro de otra página, lo que haces es recargar ese iframe (pidiendo la misma página de nuevo al servidor).
Mediante AJAX se pide al servidor en segundo plano y se reemplaza parte del html actual con el nuevo. Es más limpio y queda más bonito. Pero funcionará también con un iframe.
OK¡ Ya funciona, opte por iframe, ya que esto es un poco urgente y la funcionalidad es la misma, pero me pondré a mirar para próximos apaños ayax en concreto con prototype que la librería que tengo implementada, gracias por los consejos.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas