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

Se reemplazan los objetos! (Conecciones simultaneas????)

Estas en el tema de Se reemplazan los objetos! (Conecciones simultaneas????) en el foro de Frameworks JS en Foros del Web. Hola tengo un problema muy extraño, no se que es lo que estare haciendo mal! Mi codigo Es el siguiente (mi Class) y la arme ...
  #1 (permalink)  
Antiguo 26/09/2008, 06:13
Avatar de korg1988  
Fecha de Ingreso: junio-2006
Ubicación: Santa Fe, Argentina
Mensajes: 825
Antigüedad: 17 años, 10 meses
Puntos: 19
De acuerdo Se reemplazan los objetos! (Conecciones simultaneas????)

Hola tengo un problema muy extraño, no se que es lo que estare haciendo mal!

Mi codigo Es el siguiente (mi Class) y la arme yo, es por eso que no funciona

Código PHP:
function AjaxLoader(urlmethodfuncLoadingfuncLoaded) {
    
    
//------------------------------------------------------
    // CONSTRUCTOR
    //------------------------------------------------------

    
_this                 this;

    
//------------------------------------------------------
    // CONECCION
    //------------------------------------------------------
    
    
if(navigator.appName == "Microsoft Internet Explorer") {
        try {
            
_this.conn = new ActiveXObject('Msxml2.XMLHTTP');
        } catch(
e) {
            try {
                
_this.conn = new ActiveXObject('Microsoft.XMLHTTP');
            } catch(
e) {}
        }
    } else {
        
_this.conn = new XMLHttpRequest();
    }

    
//var
    //Subo a mayuscula, para ahorrar problemas jaja
    
_this.method         method.toUpperCase();
    
    
//Url
    
_this.url             url;
    
    
//Funciones
    
_this.funcLoaded     funcLoaded;
    
_this.funcLoading     funcLoading;

    
//Libero la memoria de las que no voy a usar
    
url                 null;
    
method                 null;
    
funcLoaded             null;
    
funcLoading         null;

    
//------------------------------------------------------
    // METODOS
    //------------------------------------------------------
    
    //Maneja los eventos segun los estados de la coneccion
    
_this.estadosChange = function() {
        if(
_this.conn.readyState == 1) {
            
_this.funcLoading();
        } else if(
_this.conn.readyState == 4) {
            
_this.funcLoaded();
        }
    }
    
    
//Realiza el proceso de carga de la informacion
    
_this.Load = function(param) {
        
url = (_this.method == 'POST') ? _this.url _this.url+"?"+param;
        
        
_this.conn.open(_this.methodurltrue);
        
_this.conn.setRequestHeader('Content-Type''application/x-www-form-urlencoded');
        
_this.conn.onreadystatechange _this.estadosChange;
        
        
_this.conn.send((_this.method == 'POST') ? param null);
    }
    
    
//Devuelve el resultado del Request
    
_this.Response = function(type)    {
        if(
type == 'text') {
            return 
_this.conn.responseText;
        } else {
            return 
_this.conn.responseXML.documentElement;
        }
    }

Ahora bien, el problema viene cuando instancio los objetos
Código PHP:
    res_view = new AjaxLoader('tfaltas.loader.php''GET', function(){
            
document.getElementById('res_tipos').innerHTML loading_image('circle');
        }, function(){
            
document.getElementById('res_tipos').innerHTML res_view.Response('text');
        });
        
    
infrac_view = new AjaxLoader('tfaltas.loader.php''GET', function(){
            
document.getElementById('infracciones').innerHTML loading_image('circle');
        }, function(){
            
document.getElementById('infracciones').innerHTML infrac_view.Response('text');
        });
        
    
infrac_view.Load('case=form_select_infracciones');
    
res_view.Load('case=res_tipos'); 
Ese codigo esta en un window.onload = function () { aqui el codigo anterior }
para que se ejecute cuando se carga la pagina, el tema es que solo se ejecuta la segunda llamada al metodo Load y si los invierto de posicion se ejecuta la primera, es como que solo se ejecuta la ultima, remplazando a las anteriores, pero no se porque sucede eso si yo instancio 2 variables con diferente nombre !

si alguien me ayuda por favor me desespera!... Es ilogico!

gracias!
  #2 (permalink)  
Antiguo 26/09/2008, 22:42
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Se reemplazan los objetos! (Conecciones simultaneas????)

Hola korg1988,

Tu problema es de scoping, revisa este articulo: http://alternateidea.com/blog/articl...pe-and-binding

Saludos.
  #3 (permalink)  
Antiguo 27/09/2008, 10:16
Avatar de MaBoRaK  
Fecha de Ingreso: abril-2003
Ubicación: La Paz - Bolivia
Mensajes: 2.003
Antigüedad: 21 años
Puntos: 35
Respuesta: Se reemplazan los objetos! (Conecciones simultaneas????)

loading..........


tambien se puede solucionar si DECLARAS LAS VARIABLES!!!! ( no se porque nunca lo hacen!! )


_this = this;

por


var _this = this;


de esa forma tendras siempre un nuevo _this para ese ámbito.


connection closed.
__________________

Maborak Technologies
  #4 (permalink)  
Antiguo 27/09/2008, 11:08
Avatar de korg1988  
Fecha de Ingreso: junio-2006
Ubicación: Santa Fe, Argentina
Mensajes: 825
Antigüedad: 17 años, 10 meses
Puntos: 19
Respuesta: Se reemplazan los objetos! (Conecciones simultaneas????)

hola maborak, gracias por contestar, y tmbien gatorV
ahora mi duda es esta, que tiene de malo no anteponer "var" antes de la declaracin de la variable si se supone que el objeto se esta instanciando nuevamente!...
no se supone que la nueva instancia de objeto estaria en res_view e infra_view en el caso de mi codigo?

o sea que estarian separadas las instancias, no entiendo porque afectaria no declararlas!

Saludos!
esa es mi duda ahora :P
  #5 (permalink)  
Antiguo 28/09/2008, 23:32
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Se reemplazan los objetos! (Conecciones simultaneas????)

Si lees el articulo que te pase, puedes entender, que todas las funciones y variables que no tienen un scope pertenecen a window, en tu caso window._this = _this, por lo que por mas nuevos objetos que instancies todos van a ser el mismo window._this.

Saludos.
  #6 (permalink)  
Antiguo 29/09/2008, 04:57
Avatar de korg1988  
Fecha de Ingreso: junio-2006
Ubicación: Santa Fe, Argentina
Mensajes: 825
Antigüedad: 17 años, 10 meses
Puntos: 19
Respuesta: Se reemplazan los objetos! (Conecciones simultaneas????)

Muchas gracias a todos, entendi todo y pude solucionar mi problema, perfectamente, gracias! ;)
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 11:17.