Foros del Web » Programando para Internet » Jquery »

[SOLUCIONADO] No se actualizan los datos

Estas en el tema de No se actualizan los datos en el foro de Jquery en Foros del Web. Bien, saludos a todos. Estoy haciendo un sistema de paginación con AJAX. El problema es que a la hora de cargar la segunda página el ...
  #1 (permalink)  
Antiguo 14/07/2013, 15:15
 
Fecha de Ingreso: febrero-2013
Ubicación: Bariloche - Argentina
Mensajes: 7
Antigüedad: 11 años, 9 meses
Puntos: 0
No se actualizan los datos

Bien, saludos a todos.
Estoy haciendo un sistema de paginación con AJAX. El problema es que a la hora de cargar la segunda página el código deja de funcionar. Osea cargo otra pagina que no sea la primera, se reciben bien los datos y ya el codigo no funciona a la segunda vez.

Es como si el código que recibo mediante ajax, no funcionara, no existiera.

Cabe aclarar que el código si funciona con versiones mucho más viejas de JQuery, pero yo quiero hacerlo con la versión que tengo.

El script deberia paginar las veces que el usuario se conectó a la web. El momento y la ip. Ya descarté problemas en el código PHP, es problema de JQuery porque como dije anteriormente con versiones viejas funciona bien.
Código Javascript:
Ver original
  1. <script type="text/javascript">
  2.     $(document).ready(function() {    
  3.     $('.paginate a').on('click', function(){
  4.                //Obtenemos el valor de la pagina a la que queremos ir
  5.         var page = $(this).attr('data');    
  6.  
  7.             $.ajax({
  8.                 type: "POST",
  9.                 url: "include/logins2.php",
  10.                 cache: false,
  11.                 data:
  12.                 {
  13.                     pagina: page,
  14.                                         //Enviamos la variable para que el archivo php sea accesible solo de esta pagina
  15.                     supervar: true,
  16.                                         //Enviamos la variable del id del usuario en la tabla
  17.                     idc: <?php echo $idc; ?>
  18.                 },
  19.                 success: function(data) {
  20.                                         //Cuando tenemos éxito obtenemos los datos y los guardamos en el div contentlog. Creo que acá esta el error
  21.                     $('#contentlog').html(data);
  22.                 }
  23.             });
  24.         });              
  25.     });    
  26. </script>
Código HTML:
Ver original
  1. <div class="alert alert-success" id="logins">
  2.     <h4 style="text-align: center;">Inicios de Sesión</h4>
  3.     <div id="contentlog">
  4.     <?php
  5.     require('./include/logins2.php');
  6.     ?>
  7.     </div>
  8. </div>

Este es el archivo logins2.php que es llamado mediante AJAX

Código PHP:
Ver original
  1. <?php
  2. if($supervar == true)
  3. {
  4.     include('db.php');
  5.     $logins = sprintf("SELECT * FROM loginser WHERE sqlid = '%s'",
  6.                 $idc);
  7.     //$query_num_services =  mysql_query("SELECT count(*) FROM loginser WHERE sqlid = $idc");
  8.     $numer = mysql_query($logins);
  9.     $num_total_registros = mysql_num_rows($numer);
  10.     //Si hay registros
  11.     echo $num_total_registros;
  12.     if ($num_total_registros > 0)
  13.     {
  14.         //numero de registros por página
  15.         $rowsPerPage = 5;
  16.  
  17.         //por defecto mostramos la página 1
  18.         $pageNum = 1;
  19.  
  20.         if(isset($_POST['pagina']))
  21.         {
  22.             $pageNum = $_POST['pagina'];
  23.         }
  24.         //contando el desplazamiento
  25.         $offset = ($pageNum - 1) * $rowsPerPage;
  26.         $total_paginas = ceil($num_total_registros / $rowsPerPage);
  27.         $sel = sprintf("SELECT * FROM loginser WHERE sqlid = '%s' ORDER BY id DESC LIMIT %s,%s",
  28.         $idc, $offset, $rowsPerPage);
  29.         $que = mysql_query($sel);
  30.         $num = mysql_num_rows($que);
  31.         ?>
  32.             <div class="contact-input" style="color: black;">
  33.                 <table class="table-light" style="margin: auto; text-align: center;">
  34.                 <tr>
  35.                     <th style="width:30%; text-align: center;">Fecha y Hora</th>
  36.                     <th style="text-align: center;">IP</th>    
  37.                 </tr>
  38.         <?php
  39.         if ($num)
  40.         {
  41.             while ($i < $num and $tos = mysql_fetch_assoc($que))
  42.             {
  43.                 $momento= htmlentities($tos[momento], ENT_QUOTES,'UTF-8');
  44.                 $iplog = htmlentities($tos[ip], ENT_QUOTES,'UTF-8');
  45.                
  46.                 echo "<tr>";
  47.                 echo "<td>$momento</td>";
  48.                 echo "<td>$iplog</td>";
  49.                 echo "</tr>";
  50.             }
  51.             ?>
  52.                 </table>
  53.             </div>
  54.             <?php
  55.         }
  56.         else
  57.         {
  58.             echo "Sin resultados";
  59.         }
  60.        
  61.         if ($total_paginas > 1) {
  62.                             echo '<div class="paginate">';
  63.                             echo '<ul>';
  64.                             if ($pageNum != 1)
  65.                                 echo '<li><a data="'.($pageNum-1).'">Anterior</a></li>';
  66.                                 for ($i=1;$i<=$total_paginas;$i++) {
  67.                                     if ($pageNum == $i)
  68.                                         //si muestro el índice de la página actual, no coloco enlace
  69.                                         echo '<li><a>'.$i.'</a></li>';
  70.                                     else
  71.                                         //si el índice no corresponde con la página mostrada actualmente,
  72.                                         //coloco el enlace para ir a esa página
  73.                                         echo '<li><a data="'.$i.'">'.$i.'</a></li>';
  74.                                  }
  75.                                  if ($pageNum != $total_paginas)
  76.                                      echo '<li><a data="'.($pageNum+1).'">Siguiente</a></li>';
  77.                                  echo '</ul>';
  78.                                   echo '</div>';
  79.                             }
  80.     }
  81. }
  #2 (permalink)  
Antiguo 15/07/2013, 07:06
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años, 6 meses
Puntos: 839
Respuesta: No se actualizan los datos

Estás reescribiendo los enlaces de la paginación, es normal que deje de funcionar, tienes que volver a asignarles el listener del evento click o usar un evento delegado.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #3 (permalink)  
Antiguo 15/07/2013, 14:09
 
Fecha de Ingreso: febrero-2013
Ubicación: Bariloche - Argentina
Mensajes: 7
Antigüedad: 11 años, 9 meses
Puntos: 0
Respuesta: No se actualizan los datos

Bien, muchas gracias por responder.
Me podrías explicar en resumen cómo vuelvo a asignarle el listener?
  #4 (permalink)  
Antiguo 15/07/2013, 14:57
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años, 6 meses
Puntos: 839
Respuesta: No se actualizan los datos

Prueba con un evento delegado, algo como:
Código Javascript:
Ver original
  1. $("#contentlog").on('click', '.paginate a', function(){
  2.     /* ... */
  3. });
Véase: http://api.jquery.com/on/#direct-and-delegated-events
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #5 (permalink)  
Antiguo 15/07/2013, 19:00
 
Fecha de Ingreso: febrero-2013
Ubicación: Bariloche - Argentina
Mensajes: 7
Antigüedad: 11 años, 9 meses
Puntos: 0
Respuesta: No se actualizan los datos

Gracias, te amo.
Es tan curioso que una linea pueda cambiar tanto :P
Ahora funciona todo perfecto, pasé días con este problema.

Etiquetas: ajax, jquery-ajax, paginacion
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:18.