Foros del Web » Programando para Internet » Javascript » Frameworks JS »

Ajax dentro de un For

Estas en el tema de Ajax dentro de un For en el foro de Frameworks JS en Foros del Web. Buenas a todos. Tengo una pequeña pregunta que capas que puedan contestarme. Yo tengo una pagina que crea text dinámicamente con un botón y algo ...
  #1 (permalink)  
Antiguo 12/03/2008, 15:35
Avatar de Javier01  
Fecha de Ingreso: febrero-2008
Ubicación: Montevideo
Mensajes: 261
Antigüedad: 16 años, 8 meses
Puntos: 31
Pregunta Ajax dentro de un For

Buenas a todos. Tengo una pequeña pregunta que capas que puedan contestarme.

Yo tengo una pagina que crea text dinámicamente con un botón y algo de javascript; luego con un botón "verificar" recorro esos text y los comparo con unos campos de la BD, este botón que llama una función en javascript tiene un FOR para recorrer y dentro de este tengo que hacer la consulta con ajax, La cual va a una pagina ASP y me devuelve si es correcto lo del campo o no.
Este resultado lo imprimo en pantalla y listo.
El problema es que cuando recorro el FOR me genera una sola respuesta, y creo que es porque se recorre todo el For antes de obtener todas las respuestas. No se si se entiende; la pregunta es si puede ser que el for no espere el resultado que devuelve ajax o la respuesta es muy lenta? o tal vez sea un error de mi código nada mas.

Acá les dejo algo simplificado (y de seguro con varios errores) de lo que es mas o menos lo que yo quiero hacer:

Código:
<script language="javascript">
var http = getHTTPObject();

function getHTTPObject() {
var xmlhttp = false;
/*@cc_on
@if (@_jscript_version >= 5)
     try {
	xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
     } catch (e) {
	try {
		xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
	} catch (E) { xmlhttp = false; }
     }
@else
     xmlhttp = false;
@end @*/
if (!xmlhttp && typeof XMLHttpRequest != 'undefined') {
     try {
	xmlhttp = new XMLHttpRequest();
     } catch (e) { xmlhttp = false; }
}
return xmlhttp;
}


function verificar()
{
var url;
var i;
var j =0;
for(i=0; i<=4; i++)
{
       url = "consultaCuadro.asp?valorquepaso=<%=valorquepaso%>	
       http.open("GET", url, true);
       lista.idCuadro.value=j;
       http.onreadystatechange = HttpResponse;
       http.send(null);
       j = j + 1;	
}

}
function HttpResponse() {
if (http.readyState == 4) {
      if (http.status == 200) {
            if (http.responseText != "")
	{
	      alert("mi respuesta para el text numero:" + j);	
	}
      }
}
}
  #2 (permalink)  
Antiguo 12/03/2008, 15:37
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Re: Ajax dentro de un For

Recuerda que AJAX es un proceso Asíncrono, es decir se ejecuta en segundo plano, lo mejor que puedes hacer es serializar todos los campos que quieres y mandarlos en un solo request a AJAX, posteriormente recibir el resultado y entonces procesarlo en JS.

Saludos.
  #3 (permalink)  
Antiguo 13/03/2008, 07:26
Avatar de Javier01  
Fecha de Ingreso: febrero-2008
Ubicación: Montevideo
Mensajes: 261
Antigüedad: 16 años, 8 meses
Puntos: 31
De acuerdo Re: Ajax dentro de un For

Aaa creo que pase ese pequeño detalle por alto. Y esa es la forma en que lo hice, mande todo de una vez y listo, lo único que la respuesta la pensaba colocar entre medio de cada text para ingresar con un text oculto (esta todo en una tabla), y entonces aparecía la respuesta ordenada y por cada text con error; Ahora lo imprimo en un text debajo de todos los otros text donde se ingresa los datos. OK gracias por la respuesta.
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 13:45.