Ver Mensaje Individual
  #1 (permalink)  
Antiguo 12/03/2007, 20:07
Avatar de Viet
Viet
 
Fecha de Ingreso: octubre-2003
Ubicación: Mar del Plata - Argentina
Mensajes: 247
Antigüedad: 21 años, 2 meses
Puntos: 2
HTTPRequest, onreadystatechange y llamados simultaneos

Estoy acostumbrado a utilizar estas funciones para trabajar con AJAX, con la idea de poder utilizar ante distintos casos las mismas funciones cuando contesta el server(readyState == 4), y por eso utilizo una funcion CallBack.

Funcion para crear el Obj HTTPRequest
Código PHP:
function CrearAjax() {
    var 
ro;
    var 
browser navigator.appName;
    if(
browser == "Microsoft Internet Explorer"){
        
ro = new ActiveXObject("Microsoft.XMLHTTP");
    }else{
        
ro = new XMLHttpRequest();
    }
    return 
ro;
}
var    
_ajax CrearAjax(); 
Funcion para hacer una peticion al server
Código PHP:
function sendAjax(page,paramsfunctionCallBack){
 
 
_ajax.open('get',page+'?'+params,true);
 
_ajax.setRequestHeader('Content-Type''application/x-www-form-urlencoded');
 
_ajax.onreadystatechangefunctionCallBack;
 
_ajax.send(null);

Funcion ejemplo para tratar la respuesta
Código PHP:
function getDataCallBack(){
    
    if(
_ajax.readyState == 4){
        var 
res _ajax.responseText;            
        
setDiv('d_main',makeJSONGrid(res));
    }

Problema:

Como ven utilizo una variable global _ajax, y mi problema esta cuando quiero hacer varias llamadas en paralelo para obtener diferente info. No puedo tener varios _ajax ya que no se cuantos llamados en paralelo haga. Tampoco puedo crearlos dentro de la funcion sendAjax porque pierdo la encapsulacion que logro con la funcion CallBack y esto representa muchas lineas de codigo de gusto.

Pregunta:

Puedo hacer algo del estilo
Código PHP:
_ajax.onreadystatechangefunctionCallBack(_ajax); 
y de esta forma creo dentro de sendAjax el objeto y en el if de la funcionCallBack utilizo ese objeto pasado por parametro para el
Código PHP:
if(_ajax.readyState == 4){ 

Mil gracias por el tiempo!
__________________
Keep it simple and keep it fast.