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

responseXML Devuelve Null la primera pasada

Estas en el tema de responseXML Devuelve Null la primera pasada en el foro de Frameworks JS en Foros del Web. Saludos a todo el foro; estoy consultando la base de datos con la funcion que pongo mas adelante, la funcion procesar() devuelve primero null y ...
  #1 (permalink)  
Antiguo 09/04/2011, 09:21
 
Fecha de Ingreso: febrero-2009
Mensajes: 64
Antigüedad: 15 años, 2 meses
Puntos: 1
responseXML Devuelve Null la primera pasada

Saludos a todo el foro; estoy consultando la base de datos con la funcion que pongo mas adelante, la funcion procesar() devuelve primero null y luego el valor que manda la pagina asp que consulta, he realizado innumerables variaciones de la funcion y sigue pasando lo mismo; en el navegador la primera vez que la consulto se muestran dos alert el primero con la palabra undefined y el segundo con el valor que manda la base de datos; si ejecuto la funcion una segunda vez, muestra dos alert con el valor de la base de datos.

Que puede estar mal, lo estoy probando en Chrome, Firefox y IE y pasa lo mismo?


Código:
var req;
var respuesta;
var broserTipe;
function leer(url) {
 
 req = false;
 
 // Llama objeto XMLHttpRequest
 if (window.XMLHttpRequest) {
   req = new XMLHttpRequest();
   if (req.overrideMimeType) {
     req.overrideMimeType('text/xml'); 
	 broserTipe="otro";
   }
 
 // Si no funciona intenta utiliar el objeto IE/Windows ActiveX 
 } else if (window.ActiveXObject) {
   req = new ActiveXObject("Microsoft.XMLHTTP"); 
   	 broserTipe="IE";
 }
 
 if(req!=null){
   req.onreadystatechange = procesar;
   req.open('GET', url, true);
   req.send(null);
 } 
 
}

function UsuGrp(Val){
url = "direccion de la pagina";
leer(url);
}

function procesar(){
	if (req.readyState==4){
		if (req.status==200){
			respuesta=req.responseXML.getElementsByTagName("existe")[0].firstChild.data;
			if (typeof respuesta!='undefined'){
				alert(respuesta);
			}
		}
	}
}
El ASP devuelve esto:

Código:
response.ContentType="text/xml"
response.write("<?xml version='1.0' encoding='ISO-8859-1'?>")
response.write("<existe>" & SMSTot & "</existe>")
Mil gracias de antemano!!!
  #2 (permalink)  
Antiguo 09/04/2011, 20:59
 
Fecha de Ingreso: febrero-2009
Mensajes: 64
Antigüedad: 15 años, 2 meses
Puntos: 1
Respuesta: responseXML Devuelve Null la primera pasada

He revisado un poco mas y el problema no esta en el responseXML, el problema esta que cuando llamo la funcion UsuGrp(Val), el coidgo continua su ejecucion sin esperar la respuesta de la funcion; a continuacion una muestra de lo que intento hacer:

Código:
function prueba(){
UsuGrp(Val)
alert(respuesta);
}
El alert siempre muestra undefinied, pero si la variable respuesta la defino

Código:
var respuesta=1;
el alert devuelve uno; alguien tiene alguna idea?

Mil gracias de antemano!!!
  #3 (permalink)  
Antiguo 10/04/2011, 10:16
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 8 meses
Puntos: 1532
Respuesta: responseXML Devuelve Null la primera pasada

intenta probar si el XML que generas es válido, bastaría solo con ejecutar la url del ajax en el navegador (FF e IE8+ soportan y validan XML) y esté te dirá si está bien formado, aveces tienes que escapar caracteres especiales como & o usar bloques CDATA

añade también los encabezados para expirar el caché.
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #4 (permalink)  
Antiguo 10/04/2011, 13:43
 
Fecha de Ingreso: febrero-2009
Mensajes: 64
Antigüedad: 15 años, 2 meses
Puntos: 1
Respuesta: responseXML Devuelve Null la primera pasada

Gracias por tu respuesta, tengo estos tag en la pagina:

<meta http-equiv="Expires" content="0">
<meta http-equiv="Last-Modified" content="0">
<meta http-equiv="Cache-Control" content="no-cache, mustrevalidate">
<meta http-equiv="Pragma" content="no-cache">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

y el XML lo creo asi

if err.number<>0 then
response.ContentType="text/xml"
response.write("<?xml version='1.0' ?><existe>false</existe>")
else
response.ContentType="text/xml"
response.write("<?xml version='1.0' encoding='ISO-8859-1'?>")
response.write("<existe>" & SMSTot & "</existe>")
end if

donde SMSTot devuelve un numero, ya he realizado la prueba directo en la pagina asp que crea el xml y IE y FF lo leen como valido.

Con un alert muestro lo que devuelve el responseXML, el problema para ser lo que comento en el ultimo post; agregue los tag y sigue ocurriendo el mismo problema; sera que a los tag le hace falta algo?

Etiquetas: ajax, devuelve, null, primera
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 00:11.