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

problema al llamar al ajax

Estas en el tema de problema al llamar al ajax en el foro de Frameworks JS en Foros del Web. mi código: Código: var _xmlhttp, _divname; /*@cc_on @*//*@if (@_jscript_version >= 5) var idAX = ["Msxml2.XMLHTTP.5.0","Msxml2.XMLHTTP.4.0","Msxml2.XMLHTTP.3.0","Msxml2.XMLHTTP","Microsoft.XMLHTTP"]; for(var i=0; !_xmlhttp && i<idAX.length; i++) {try{ _xmlhttp = new ...
  #1 (permalink)  
Antiguo 12/11/2005, 14:36
Avatar de nachopro  
Fecha de Ingreso: noviembre-2003
Ubicación: Haedo, Bs. As.
Mensajes: 290
Antigüedad: 20 años, 5 meses
Puntos: 2
problema al llamar al ajax

mi código:
Código:
var _xmlhttp, _divname;

/*@cc_on @*//*@if (@_jscript_version >= 5)
var idAX = ["Msxml2.XMLHTTP.5.0","Msxml2.XMLHTTP.4.0","Msxml2.XMLHTTP.3.0","Msxml2.XMLHTTP","Microsoft.XMLHTTP"];
for(var i=0; !_xmlhttp && i<idAX.length; i++)
{try{ _xmlhttp = new ActiveXObject(idAX[i]);}
catch(ex) { _xmlhttp = false; }
}@end @*/

if (!_xmlhttp && typeof XMLHttpRequest != 'undefined') {
	_xmlhttp = new XMLHttpRequest();
}

function leerPagina(url, div) {
	_divname = div;
	if(_xmlhttp) {
		_xmlhttp.open("GET", url, true);
		_xmlhttp.onreadystatechange = evaluarResultado;
		_xmlhttp.send(null);
	}
}

function evaluarResultado() {
	if (_xmlhttp.readyState == 1) {
		document.getElementById(_divname).innerHTML = "<img src=\"test.gif\">";
	}
	else if (_xmlhttp.readyState == 4) {
		if (_xmlhttp.status == 200) {
			document.getElementById(_divname).innerHTML = _xmlhttp.responseText;
		}
		else {
			document.getElementById(_divname).innerHTML = "Se genero un error:\n" + _xmlhttp.statusText;
		}
	}
}
mi problema:
cuando hago una llamada a la función leerPagina() y, sin esperar a que esta termine vuelvo a llamarla (ya sea por desesperado o para cargar otra página) el firefox me indica:
Código:
Error: [Exception... "Component returned failure code: 0x80040111 (NS_ERROR_NOT_AVAILABLE) [nsIXMLHttpRequest.status]"  nsresult: "0x80040111 (NS_ERROR_NOT_AVAILABLE)"  location: "JS frame :: archivo.js :: evaluarResultado :: line 28"  data: no]
Line: 28
y ninguno de los procesos termina, debo volver a inicar la función
me pueden ayudar para que esto no pase? es decir, que agende las peticiones o que aborte la actual y continúe con la nueva petición

gracias
  #2 (permalink)  
Antiguo 12/11/2005, 17:35
Avatar de SiR.CARAJ0DIDA  
Fecha de Ingreso: junio-2004
Ubicación: Acá
Mensajes: 1.166
Antigüedad: 19 años, 10 meses
Puntos: 4
cuando envias un request podes preguntar:

if (readyState == 0 || readyState == 4)
{
envio el request
}

o hacer un abort antes de enviar el request.
__________________
Internet Explorer SuckS
Download FireFox
  #3 (permalink)  
Antiguo 13/11/2005, 00:16
 
Fecha de Ingreso: noviembre-2002
Ubicación: Mex
Mensajes: 140
Antigüedad: 21 años, 5 meses
Puntos: 0
De hecho nuestro amigo lo hace en las líneas:
Código PHP:
else if (_xmlhttp.readyState == 4) {
        if (
_xmlhttp.status == 200) {
            
document.getElementById(_divname).innerHTML _xmlhttp.responseText;
        }
        else {
            
document.getElementById(_divname).innerHTML "Se genero un error:\n" _xmlhttp.statusText;
        }
    } 
Sería interesante ver su página completa.

checa el tutorial de mi site en :
http://www.fuenteria.com/?external=35


Mi site esta hecho con
__________________
escribiendo mi libro de AJAX
  #4 (permalink)  
Antiguo 13/11/2005, 09:59
Avatar de SiR.CARAJ0DIDA  
Fecha de Ingreso: junio-2004
Ubicación: Acá
Mensajes: 1.166
Antigüedad: 19 años, 10 meses
Puntos: 4
no esta haciendo nada, esta enviando un request, cuando se completa guarda el html en una capa pero podes apretar el boton que hace el request 5000 veces si no pregunta por la condicion que puse mas arriba
__________________
Internet Explorer SuckS
Download FireFox
  #5 (permalink)  
Antiguo 13/11/2005, 12:20
Avatar de nachopro  
Fecha de Ingreso: noviembre-2003
Ubicación: Haedo, Bs. As.
Mensajes: 290
Antigüedad: 20 años, 5 meses
Puntos: 2
SiR.CARAJ0DIDA y otros opinadores...

estaría bien si por cada ves que hago una llamada a la función leerPagina() creo un nuevo _var[i] = new XMLHttpRequest(); y cuando este termine elimine _var[i] ??
entonces así puedo ejecutar muchos links en simultaneo
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 21:39.