Foros del Web » Programando para Internet » Javascript »

Entra varias veces a la función... sale solo una

Estas en el tema de Entra varias veces a la función... sale solo una en el foro de Javascript en Foros del Web. Hola, a través del siguiente código entro en la función loadXMLDoc Entro con una url que me abrirá, y el destino de la capa donde ...
  #1 (permalink)  
Antiguo 01/08/2009, 10:21
 
Fecha de Ingreso: junio-2006
Mensajes: 84
Antigüedad: 17 años, 9 meses
Puntos: 1
Entra varias veces a la función... sale solo una

Hola, a través del siguiente código entro en la función loadXMLDoc
Entro con una url que me abrirá, y el destino de la capa donde lo abrirá

Código HTML:
<script>
loadXMLDoc('url.php', 'Result'); 
</script>

<div id="Result"></div>

<script>
loadXMLDoc('url2.php', 'Result2'); 
</script>

<div id="Result2"></div> 
El problema es que entran las dos funciones... pero sólo salen los resultados de la última

Código HTML:
<script language="JavaScript"> 
<!--
var req = null;
 
function loadXMLDoc(url, dest) {
	window['dest'] = dest;
	alert('alerta:'+window['dest']);
   // Internet Explorer
   try { req = new ActiveXObject("Msxml2.XMLHTTP"); }
   catch(e) {
      try { req = new ActiveXObject("Microsoft.XMLHTTP"); }
      catch(oc) { req = null; }
   }
 
   // Mozailla/Safari
   if (req == null && typeof XMLHttpRequest != "undefined") {
      req = new XMLHttpRequest();
   }
   // Call the processChange() function when the page has loaded
   if (req != null) {
      req.onreadystatechange = processChange;
      req.open("GET", url, true);
      req.send(null);
   }
}
 
function processChange(evt) {
   // The page has loaded and the HTTP status code is 200 OK
   if (req.readyState == 4) {
      if (req.status == 200) {
	alert('he entrado '+window['dest']);
      // Write the contents of this URL to the searchResult layer
      getObject(window['dest']).innerHTML = req.responseText;
      }
   }
}
 
function getObject(name) {
   var ns4 = (document.layers) ? true : false;
   var w3c = (document.getElementById) ? true : false;
   var ie4 = (document.all) ? true : false;
   
   if (ns4) return eval('document.' + name);
   if (w3c) return document.getElementById(name);
   if (ie4) return eval('document.all.' + name);
   return false;
}
// -->
</script> 
Sabeis que puedo hacer?
  #2 (permalink)  
Antiguo 02/08/2009, 14:35
 
Fecha de Ingreso: junio-2006
Mensajes: 84
Antigüedad: 17 años, 9 meses
Puntos: 1
Respuesta: Entra varias veces a la función... sale solo una

..................
  #3 (permalink)  
Antiguo 02/08/2009, 14:48
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: Entra varias veces a la función... sale solo una

el problema es que cuando la peticion es asincronea (async), javascript no espera por la repuesta de esta peticion para continuar. en tu caso, el objeto XHR tu lo guardas en la variable req. al codigo no detenerse, tu funcion loadXMLDoc sobreescribe la variable req mostrando asi solo la ultima peticion. para solucionarlo, tienes que hacer una de dos: guardas las peticiones en diferentes variables, o bien haces la peticion sincronica (sync).
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
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 12:55.