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

dos variables xmlrequest

Estas en el tema de dos variables xmlrequest en el foro de Frameworks JS en Foros del Web. Tengo dos ficheros .js En el primero creo una variable xmlrequest global para hacer una operacion AJAX y llamar a un servlet. por otro lado ...
  #1 (permalink)  
Antiguo 24/02/2009, 09:58
 
Fecha de Ingreso: enero-2009
Mensajes: 148
Antigüedad: 15 años, 9 meses
Puntos: 0
dos variables xmlrequest

Tengo dos ficheros .js
En el primero creo una variable xmlrequest global para hacer una operacion AJAX y llamar a un servlet.

por otro lado en segundo fichero .js me gustaría utilizar esa misma variable xmlrequest para hacer una llamada y abrir un archivo xml que tengo que procesar

¿es posible o tengo que tener dos variables para cada una de las llamadas?
En el caso que se pueda como uso la variable en el segundo fichero.js

fichero1.js
Código:
var xmlreq = false;

function newXMLHttpRequest(){

  if (window.XMLHttpRequest)    {   //Mozilla, Safari etc
        xmlreq = new XMLHttpRequest ();

  } else if (window.ActiveXObject)    {      // IE
        try{
              xmlreq = new ActiveXObject ("Msxml2.XMLHTTP");
        } catch (e)        {    // en caso que sea una version antigua
             try{
        		 xmlreq = new ActiveXObject ("Microsoft.XMLHTTP");
            } catch (e)  {
            }
		}
  }  else {
      return false;
  }
     return xmlreq;
}

function getXMLHttpRequest() {
    return xmlreq;
}

function setXMLHttpRequest(req) {
    xmlreq = req;
}
fichero2.js
Código:
function Io(){

    this.makeRequest = function(url, response,params){
       
        request = getXMLHttpRequest();
     
        request.onreadystatechange = response;

        if(params["METHOD"]== "POST"){

              post_data = params["POST_DATA"];
              request.open = ('POST', url, true);
              request.send(post_data);             
         }else{
             request.open = ('GET', url, true); //Llamo a un servlet que se encargue de devolver el objeto
               request.send(null);//ERROR  
             
         }

       }
}

var io = new Io();
El segundo fichero abre la url y la respuesta se ejecuta en response. Me da un error en request.send(null) vamos a partir de ahi ya no sale nada...

Alguna idea?
  #2 (permalink)  
Antiguo 24/02/2009, 10:28
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
Respuesta: dos variables xmlrequest

Hola dablin,

Lo que tienes que hacer es aislar las funciones, para crearlas como nuevas, no usar variables globales si no con el operador new crear nuevos objetos y con eso puedes tener 2 o mas requests paralelos.

Saludos
  #3 (permalink)  
Antiguo 24/02/2009, 10:46
 
Fecha de Ingreso: enero-2009
Mensajes: 148
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: dos variables xmlrequest

No entiendo muy bien a que te refieres con aislar las funciones crear un nuevo fichero para la funcion newXMLHttpRequest, getnewXMLHttpRequest, setnewXMLHttpRequest ?

Y ahora en el resto de fichero donde tenga una variable local request hacer newXMLHttpRequest
  #4 (permalink)  
Antiguo 24/02/2009, 14:30
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
Respuesta: dos variables xmlrequest

Solamente es la funcion newXMLHttpRequest, es la que tienes que aislar para crearla como contenedor y poder instanciarla.

De la forma que lo tienes cada que llames a newXMLHttpRequest te regresa la misma variable xmlreq por lo que es compartida y evita que hagas 2 o n llamadas.

Saludos
  #5 (permalink)  
Antiguo 25/02/2009, 04:01
 
Fecha de Ingreso: enero-2009
Mensajes: 148
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: dos variables xmlrequest

No me queda claro yo se que tu lo ves muy claro jeje pero soy nuevo en ajax y javascript y me pierdo con nada.!

Que tendría que hacer
Código:
function newXMLHttpRequest(){
var xmlreq = false;

  if (window.XMLHttpRequest)    {   //Mozilla, Safari etc
        xmlreq = new XMLHttpRequest ();

  } else if (window.ActiveXObject)    {      // IE
        try{
              xmlreq = new ActiveXObject ("Msxml2.XMLHTTP");
        } catch (e)        {    // en caso que sea una version antigua
             try{
        		 xmlreq = new ActiveXObject ("Microsoft.XMLHTTP");
            } catch (e)  {
            }
		}
  }  else {
      return false;
  }
     return xmlreq;
}
y en los otros ficheros cuando quiera hacer una nueva llamada ha ajax entonces

Código:
xmlreq = newXMLHttpRequest()
de esa manera estaria reutilizando el mismo objeto XmlHttpRequest? pero no debería ser global para reutilizarlo?
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 06:15.