Ver Mensaje Individual
  #1 (permalink)  
Antiguo 24/02/2009, 14:55
Avatar de jam1138
jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 20 años, 4 meses
Puntos: 102
jQuery | Paginar resultados (vía AJAX) en tablas y/o parsear JSON

Estoy realizando una consulta al servidor mediante un formulario y mi idea es presentar los resultados en una tabla por resultado (información relacionada), pero como son varios resultados la idea es paginar esas tablas.

Mi duda, en resumen, es cómo poder hacerlo .

Actualmente el formulario se está enviando en segundo plano (AJAX) y ahora estoy regresando la tabla como tal, parseando por cada resultado un código como este:
Código html:
Ver original
  1. <div id="idResult-numeroGeneradoDinamicamente">
  2. <table class="tableResult">
  3.   <caption>Viendo resultado XX de YYY</caption>
  4.   <thead>
  5.     <th> </th>
  6.     <th>Nombre(s)</th>
  7.     <th>Apellido paterno</th>
  8.     <th>Apellido materno</th>
  9.   </thead>
  10.  
  11.   <tfoot>
  12.     <tr>
  13.       <td colspan="4">
  14.         <button type="button">Seleccionar</button>
  15.       </td>
  16.     </tr>
  17.   </tfoot>
  18.  
  19.   <tbody>
  20.     <tr>
  21.       <th>Persona1: </th>
  22.       <td>XXXXXXXXXXX</td>
  23.       <td>XXXXXXXXXXX</td>
  24.       <td>XXXXXXXXXXX</td>
  25.     </tr>
  26.     <tr>
  27.       <th>Persona 2: </th>
  28.       <td>XXXXXXXXXXX</td>
  29.       <td>XXXXXXXXXXX</td>
  30.       <td>XXXXXXXXXXX</td>
  31.     </tr>
  32.     <tr>
  33.       <th>Persona 3: </th>
  34.       <td>XXXXXXXXXXX</td>
  35.       <td>XXXXXXXXXXX</td>
  36.       <td>XXXXXXXXXXX</td>
  37.     </tr>
  38.   </tbody>
  39. </div>

Que visualmente genera algo como esto:



Con esto, estoy teniendo problemas para paginar dichas tablas. Primero porque me he dado cuenta que así, regresando HTML, los eventos previamente declarados no son asociados con el "nuevo código"; esto es, que si antes declaré algo como $('.tableResult').click( // etc ); y le doy click a alguna tabla del resultado (que corresponde con la clase), el evento no es lanzado.

He ahí el primer planteamiento: ¿cómo "solucionar esto"?; ¿regresar igual código javascript y 'cargarlo' --con eval()--?, ¿algo como 'recargar' una función previamente declarada? ... no sé, ni idea.

Por otra parte, esto lo tengo así por tomar código ya hecho, sin embargo, ¿qué tan mejor sería la opción de regresar un arreglo de objetos JSON para parsearlos y generar el contenido dinámicamente?; más importante ¿cómo hacerlo?

Estoy utilizando Form Plugin, puedo recuperar mi resultado sin problema pero no sé como generar las tablas y tratarlas para su paginación.

El código, por si fuese necesario, es:
Código javascript:
Ver original
  1. var options = {
  2.                 target : '#results',
  3.                 beforeSubmit: function() {
  4.                      // Supongo esto igual se puede hacer de una  manera más elegante.
  5.                      $('#results').html('<div id="indicadorBuscando"><img alt="buscando..." src="img/cargando.gif"></div>');
  6.                 },
  7.                 success: mostrarResultados, // callback a función mostrarResultados
  8.                 dataType : 'json'
  9.             };
  10.  
  11. // Envio el formulario, recibo respuesta y es pasada a la función mostrarResultados
  12.  
  13. function mostrarResultados(data) {
  14.     // Y data es el resultado en formato JSON, pero aquí no sé como generar las tablas
  15. }

Respecto a esta última manera, he encontrado un código pero que honestamente no entiendo bien, como en la declaración de esta variable:
Código javascript:
Ver original
  1. var $table = $('<table/>');
¿esta creando un nuevo elemento ahí? ... No había visto antes algo como $variable .

Como siempre, cualquier comentario, sugerencia, enlace, ejemplo es agradecido de antemano.

__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"