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

Ejecución simultánea de funciones AJAX

Estas en el tema de Ejecución simultánea de funciones AJAX en el foro de Frameworks JS en Foros del Web. Pues es que si hago dos llamadas (una seguida de la otra) a dos funciones que utilizan el objeto AJAX creado con el método "new ...
  #1 (permalink)  
Antiguo 17/09/2006, 13:55
 
Fecha de Ingreso: septiembre-2006
Mensajes: 2
Antigüedad: 18 años, 2 meses
Puntos: 0
Ejecución simultánea de funciones AJAX

Pues es que si hago dos llamadas (una seguida de la otra) a dos funciones que utilizan el objeto AJAX creado con el método "new XMLHttpRequest();" , el resultado que obtengo siempre es únicamente el de la segunda función que ejecuto.

Parece que al hacer la llamada la segunda función se anula la petición que había hecho la primera.

He visto por ahí algunas páginas que cargan paralelamente los resultados de distintas funciones AJAX simultáneas.

La única solución que he conseguido es llamar a la segunda funcion dentro de la primera cuando esta termina, pero no me sirve para algunos casos.

Otra forma sería hacer alguna funcion que fuera capaz de cargar la segunda función cuando termina la primera, pero no sé como hacerlo. Aunque de esta forma la carga se haría de forma secuencial, no paralela que es lo que me interesaría. No creo hay ningún problema de que el servidor se sobrecargue, porque los datos son muy livianos.

Bueno nada mas, espero haberme expresado con claridad. Cualquier respuesta será bien recibida. Gracias de antemano.
  #2 (permalink)  
Antiguo 17/09/2006, 20:20
 
Fecha de Ingreso: septiembre-2006
Mensajes: 2
Antigüedad: 18 años, 2 meses
Puntos: 0
vale ya sé como es :P

Vale ya sé como es :P

Parece que solo tenía que darle un nombre diferente a la variable en la que creaba el objeto AJAX para utilizarlo en las distintas funciones.

Por si a alguien le sirve ahí queda dicho. El único problemilla que me queda es el de que una función que depende de la finalización de otra pueda comprobar que esta haya terminado para ejecutarse la misma.

Pues eso, seguiré investigando/probando. Bye bye.
  #3 (permalink)  
Antiguo 21/09/2006, 14:14
 
Fecha de Ingreso: agosto-2005
Mensajes: 20
Antigüedad: 19 años, 2 meses
Puntos: 0
como comentario

Que tal saludos, pues mira eso de ejecutar dos tareas simultaneamente yo lo veo dificil, ya que segun hasta donde yo se, js no es multihilo por lo que lo mejor que podrias lograr seria dar un "efecto" de que ambas tareas se ajecutan simultaneamente, lo que talves podria ser es que en el lenguaje que estes desarrollando recibir los parametros del request y ahi generar las dos tareas. bueno, si el lenguaje en el que desarrollas puede manejar miltihilo
  #4 (permalink)  
Antiguo 01/02/2008, 08:57
 
Fecha de Ingreso: febrero-2008
Mensajes: 1
Antigüedad: 16 años, 9 meses
Puntos: 0
De acuerdo Ejecución simultánea de funciones AJAX

Efectivamente lo que hice fue replantear la funcion cargaContenidoGET, pues le agrege una variable llamada objetoAjax y asi hacerla reutilizable



************************************************** *****
la funcion
************************************************** *****
function cargaContenidoGET(control,url,valores,objetoajax){ // funcion generica, utilizada principalmente para crear listas dependientes
objetoajax=nuevoAjax();
objetoajax.open("GET",url+ "?" + valores, true);
objetoajax.onreadystatechange=function()
{

if (objetoajax.readyState==1){

document.getElementById(control).innerHTML = " Aguarde por favor...";

}


if (objetoajax.readyState==4)
{
if (objetoajax.status == 200) //200: OK
{
document.getElementById(control).innerHTML=objetoa jax.responseText;
}
else //Se produjo un error
{
alert("No se pudo recuperar la información: " + objetoajax.statusText);
}
}
else
{
document.getElementById(control).innerHTML='<br><b r></br><br><p align="center" class="tituloestadio"><img src="../imagenes/gif/espera.gif" > Cargando...</p>';
}
}
objetoajax.send(null);
}

************************************************** *****


************************************************** *****
la llamada
************************************************** *****
function cualquiera(){
var objajax=null;
cargaContenidoGET("control","url","valores",objaja x);
var objajax2=null;
cargaContenidoGET("control","url","valores",objaja x2);
}
************************************************** *****


Gracias Vart

Última edición por yormanoviedo; 01/02/2008 a las 09:04
  #5 (permalink)  
Antiguo 02/12/2009, 09:12
 
Fecha de Ingreso: diciembre-2009
Mensajes: 1
Antigüedad: 14 años, 11 meses
Puntos: 0
De acuerdo Respuesta: Este man me salvo la patria

Cita:
Iniciado por vart Ver Mensaje
Vale ya sé como es :P

Parece que solo tenía que darle un nombre diferente a la variable en la que creaba el objeto AJAX para utilizarlo en las distintas funciones.

Por si a alguien le sirve ahí queda dicho. El único problemilla que me queda es el de que una función que depende de la finalización de otra pueda comprobar que esta haya terminado para ejecutarse la misma.

Pues eso, seguiré investigando/probando. Bye bye.

Claro hay que cambiar el nombre del objeto ajax cuando se trata de ejecutar varias funciones por ejemplo:

function Uno(numOrden){

url = "BuscarFechaYT?";
ajax1 = getAjaxObject();
ajax1.open( 'POST',url, true );
ajax1.setRequestHeader('Content-Type', 'application/x-www-form- urlencoded; charset=ISO-8859-1');
parametros = 'numeroOrden=' + escape(numOrden);
ajax1.send(parametros);
ajax1.onreadystatechange = procesarBuscarFechaYT;


}

y si se quiere utilizar la funcion dos se cambia el nombre del ajax

function Dos(numOrden){

url = "BuscarFechaYT?";
ajax2 = getAjaxObject();
ajax2.open( 'POST',url, true );
ajax2.setRequestHeader('Content-Type', 'application/x-www-form- urlencoded; charset=ISO-8859-1');
parametros = 'numeroOrden=' + escape(numOrden);
ajax2.send(parametros);
ajax2.onreadystatechange = procesarBuscarFechaYT;


}


ahora si se pueden ejecutar las dos funciones sin ningun problema ejemplo:

function cargarFunciones(numOrden){

Uno(numOrden);
Dos(numOrden);

}
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 04:58.