Foros del Web » Programando para Internet » Jquery »

Problema con Ajax + JQuery + append()

Estas en el tema de Problema con Ajax + JQuery + append() en el foro de Jquery en Foros del Web. Hola, mi problema es este: Tengo una tabla html a la que se agregan filas dinámicamente cada cierto tiempo, por medio de un setInterval(). El ...
  #1 (permalink)  
Antiguo 27/09/2011, 20:23
 
Fecha de Ingreso: julio-2011
Mensajes: 6
Antigüedad: 13 años, 4 meses
Puntos: 0
Pregunta Problema con Ajax + JQuery + append()

Hola, mi problema es este:

Tengo una tabla html a la que se agregan filas dinámicamente cada cierto tiempo, por medio de un setInterval().

El setInterval() llama a una función $.ajax() que recibe el html correspondiente a la nuevas filas a insertar.

Posteriormente, agrego las filas recibidas a mi tabla por medio de append().

El problema es que una vez que tengo recargadas las nuevas filas, necesito recorrer toda la tabla para realizar ciertos procesos, sin embargo, JQuery no reconoce las nuevas filas, es más, el navegador no las reconoce como cargadas.

Probé con hacer el método ajax 'async: true' y no funciona. (También probé con 'async:false' por las dudas).

Supongo que tiene que ver con la carga asíncrona, pero he probado varias implementaciones y no puedo encontrar la solución.

Si alguien tiene alguna idea, muchas gracias.
  #2 (permalink)  
Antiguo 28/09/2011, 08:36
 
Fecha de Ingreso: abril-2011
Mensajes: 1.342
Antigüedad: 13 años, 7 meses
Puntos: 344
Respuesta: Problema con Ajax + JQuery + append()

Pon el código y utiliza las etiquetas que existen para formatearlo (para que se vea mejor).

Saludos.
  #3 (permalink)  
Antiguo 28/09/2011, 11:36
 
Fecha de Ingreso: julio-2011
Mensajes: 6
Antigüedad: 13 años, 4 meses
Puntos: 0
Respuesta: Problema con Ajax + JQuery + append()

Ok, voy a poner un código simple y comprensible:

Este sería un index.php básico:

Código PHP:
Ver original
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  2. <html>
  3.     <head>
  4.         <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  5.         <script src="jquery-1.6.1.js" type="text/javascript"></script>
  6.         <script src="main.js" type="text/javascript"></script>
  7.         <title></title>
  8.     </head>
  9.     <body>
  10.         <p>ESTO ES LA TABLA DE PRUEBAS</p>
  11.         <table border="1" id="pruebas">
  12.         <?php
  13.             echo "<tr>
  14.                    <td>Campo1</td>
  15.                    <td>Campo2</td>
  16.                    <td>Campo3</td>
  17.                    <td>Campo4</td>
  18.                  </tr>
  19.                  <tr class='p'>
  20.                    <td>Uno</td>
  21.                    <td>XXXX</td>
  22.                    <td>XXXX</td>
  23.                    <td id='0'>0</td>
  24.                  </tr>
  25.                  <tr class='p'>
  26.                    <td>Dos</td>
  27.                    <td>XXXX</td>
  28.                    <td>XXXX</td>
  29.                    <td id='1'>0</td>
  30.                  </tr>
  31.                  <tr class='p'>
  32.                    <td>XXXX</td>
  33.                    <td>XXXX</td>
  34.                    <td>XXXX</td>
  35.                    <td id='2'>0</td>
  36.                  </tr>";
  37.         ?>
  38.         </table>
  39.     </body>
  40. </html>

Luego el Javascript de carga:

Código Javascript:
Ver original
  1. $(document).ready(function(){
  2.   setInterval("sumarUno()", 1000);
  3.   setInterval("agregarFila()", 5000);
  4. });
  5.  
  6. function sumarUno(){
  7.     var c = $('tr.p');
  8.  
  9.     for (var i= 0; i < c.length; i++){
  10.         var id = "#" + i;
  11.         var campo = $(id);
  12.  
  13.         var valor = parseInt(campo.text()) + 1;
  14.         campo.text(valor);
  15.     }
  16. }
  17.  
  18. function agregarFila(){
  19.     $.ajax({
  20.        url: 'pruebas.php',
  21.  
  22.        success:function(html){
  23.            $('#pruebas').append(html);
  24.        },
  25.  
  26.        error:function(err){
  27.            alert("ERROR:" + err);
  28.        }
  29.     });
  30. }

Como ven, cada un segundo le sumo uno al Campo4, y cada 5 segundos pido nuevas filas y las agrego a la tabla html.

El problema es que las nuevas filas insertadas en la tabla no son reconocidas por JQuery la siguiente vez que recorra las mismas, en la función 'sumarUno()'.
  #4 (permalink)  
Antiguo 28/09/2011, 13:19
 
Fecha de Ingreso: julio-2011
Mensajes: 6
Antigüedad: 13 años, 4 meses
Puntos: 0
Respuesta: Problema con Ajax + JQuery + append()

Actualización:

En la función agregarFila hice el siguiente cambio:

Código Javascript:
Ver original
  1. function agregarFila(){
  2.     $.ajax({
  3.        url: 'pruebas.php',
  4.        dataType: "html",
  5.        async: false,
  6.  
  7.        success:function(html){
  8.             $('#pruebas').append(html);
  9.  
  10.             $('#pruebas').ready(function(){
  11.                 alert($('#3'),text()); //ESTO SERÍA EL ID DEL CAMPO DE LA NUEVA FILA AGREGADA POR AJAX
  12.             });
  13.        },
  14.  
  15.        error:function(err){
  16.            alert("ERROR:" + err);
  17.        },
  18.  
  19.     });

De esa manera JQuery SÍ reconoce el elemento y lo muestra el valor correcto en el alert, sin embargo, sólo siver para la prueba, pues yo no puedo saber el id de lo que va a llegar, ya que es dinámico.

Además, puede llegar por ajax el html correspondiente a varias filas.

¿Pot qué JQuery reconoce el elemento por el ID y sin embargo al recorrer la tabla no lo reconoce?

NOTA: si pongo 'Ver código fuente' de la página, las filas agregadas por ajax no se ven en el html correspondiente.
  #5 (permalink)  
Antiguo 29/12/2011, 20:04
 
Fecha de Ingreso: diciembre-2011
Mensajes: 1
Antigüedad: 13 años
Puntos: 0
Respuesta: Problema con Ajax + JQuery + append()

Hey Petit_Fucker!, yo tengo el mismo problema, pudiste solucionar? si es así, te agradecería me indicaras como!, saludos y gracias
  #6 (permalink)  
Antiguo 17/01/2012, 12:55
 
Fecha de Ingreso: enero-2012
Mensajes: 1
Antigüedad: 12 años, 11 meses
Puntos: 0
Respuesta: Problema con Ajax + JQuery + append()

tb tuve el mismo problema, viendo que no hay solucion en este topico, cosa que molesta un poco, les dejo la implementacion que realice, la diferencia esta en el uso de los correspondientes thead, tbody y a la hora de usar el append no olviden indicar que dentro del tbody de la tabla es en donde queremos agregar el html :)

HTML

<table id='tabla_destino' width='100%'>
<thead>
<tr>
<th>Item</th>
<th>Descripcion</th>
</tr>
</thead>
<tbody>
</tbody>
</table>

JS
function addFila(){
var id = 0;
var trs = $('#tabla_destino >tbody >tr');
trs.each(function () { id = id+1; });
var datos = "funcion=addFila&id="+id;
$.ajax({
type: "POST",
url: "funciones.php",
data: datos,
success: function(msg){
var x;
x=$("#tabla_destino >tbody ");
x.append(msg);
}
});
}

Etiquetas: ajax, append, async, setinterval
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 09:45.