Foros del Web » Programando para Internet » Javascript »

Problema con ajax, solo responde la primera vez.

Estas en el tema de Problema con ajax, solo responde la primera vez. en el foro de Javascript en Foros del Web. Hola, tengo un html con una tabla que se genera a partir de un bucle "foreach" en php. Basicamente recojo los datos de un archivo ...
  #1 (permalink)  
Antiguo 01/05/2014, 04:19
 
Fecha de Ingreso: abril-2013
Mensajes: 9
Antigüedad: 11 años
Puntos: 0
Problema con ajax, solo responde la primera vez.

Hola, tengo un html con una tabla que se genera a partir de un bucle "foreach" en php.

Basicamente recojo los datos de un archivo y genero una fila en la tabla con los resultados de la consulta al archivo.

EL problema es que tengo una funcion ajax que envia una consulta a un php en internet y en funcion de la respuesta modifica parte de la fila que estoy generando con el foreach.

todo funciona en la primera llamada, pero en las siguientes filas ya no funciona el ajax. He probado todo pero no consigo mas que la primera linea. Paso codigo:

Código:
$lines = file("sdom.bin");
 foreach($lines as $line_num => $line)
 {
 
 $streams = explode("//,,//..//", $line);

$subdominio=trim($streams[2]);
$user=$streams[1];
$id=$streams[0];


?>
	<table align="center">
		<tr>
		<td class="auto-style33">
		<img alt="" height="34" src="img/nube_link.png" width="52" style="float: right"/></td>
		<td class="auto-style26"><? echo $subdominio; ?>.con-ip.com</td>
			<td><img id="<? echo $line_num; ?>" alt="" height="30" src="img/check-icon.png" width="30" /></td>
		</tr>
	</table>
	<script>
    conexion=crearXMLHttpRequest();
    conexion.onreadystatechange = procesarEventos3;
    conexion.open('GET', 'http://www.*****.com/actualiza_subdominio_cliente.php?subdominio=<? echo $subdominio; ?>&user=<? echo $user; ?>&id=<? echo $id; ?>', true);
    conexion.send(null);


function procesarEventos3()
{
  var detalles = document.getElementById(<? echo $line_num; ?>);


  if(conexion.readyState == 4){
    if(conexion.status==200){
        if((conexion.responseText)=='La IP del subdominio se ha actualizado, correctamente.'){
        detalles.src = "img/check-icon.png";
                																                     }else{  detalles.src = "img/bad-icon.png"; }																	
        																	
        																	
        					}else{ detalles.src = "img/bad-icon.png"; }
		
  }
}
</script>

<? } ?>
En resumen el icono check-icon.png deberia de cambiar por bad-icon.png en determinados casos, pero solo cambia si se cumple la condicion en la primera linea, en las demas parece que el ajax no se ejecute.
  #2 (permalink)  
Antiguo 01/05/2014, 23:03
Avatar de fullmental  
Fecha de Ingreso: octubre-2004
Ubicación: México DF, Xochimilco
Mensajes: 593
Antigüedad: 19 años, 6 meses
Puntos: 3
Respuesta: Problema con ajax, solo responde la priemra vez.

Este problema se presenta con cualquier navegador?

Es muy probable que el llamado a AJAX se este interpretando como repetitivo en algunos navegadores y por eso se dispare sólo una vez

Para arreglar eso agregale un parametro a la url con una fecha única cada vez que lo llamas

Por ejemplo:
Código:
var timestamp = new Date().getTime(); 
 conexion.open('GET', 'http://www.*****.com/actualiza_subdominio_cliente.php?subdominio=<? echo $subdominio; ?>&timestamp='+timestamp+'&user=<? echo $user; ?>&id=<? echo $id; ?>', true);

Etiquetas: ajax, funcion, html, php, responde
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 10:21.