Ver Mensaje Individual
  #4 (permalink)  
Antiguo 07/02/2011, 08:18
mash180
 
Fecha de Ingreso: febrero-2009
Mensajes: 64
Antigüedad: 15 años, 9 meses
Puntos: 1
Respuesta: Problema con getElementsByTagName en I.E.

Gracias a ambos por su tiempo, publico el codigo completo a ver si consiguen algun error, el xml devuelve siempre false o true, de eso estoy 100% seguro, el codigo lo tome de un ejemplo en la web y lo fui adaptando, la idea es implementarlo en un formulario para que se comprueben los datos introducidos en el mismo, lo tengo en el evento onblur:

Código:
var req;
var respuesta;
var ValUsu;

function leer_doc(url) {
 
 req = false;
 
 // Llama objeto XMLHttpRequest
 if (window.XMLHttpRequest) {
   req = new XMLHttpRequest();
   if (req.overrideMimeType) {
     req.overrideMimeType('text/xml'); 
   }
 
 // Si no funciona intenta utiliar el objeto IE/Windows ActiveX 
 } else if (window.ActiveXObject) {
   req = new ActiveXObject("Microsoft.XMLHTTP"); 
 }
 
 if(req!=null){
   req.onreadystatechange = procesarRespuesta;
   req.open('GET', url, true);
   req.send(null);
 } 
 
}

function autentica(Val){
ValUsu=Val;
if (ValUsu=="strCelNum"){
usuario = document.getElementById("strCelIni").value + document.getElementById(ValUsu).value;
}else{
usuario = document.getElementById(ValUsu).value;
}
	switch (ValUsu) {
	case "strUsu":
	case "strRefPor":
 	url = "../Script/ValRef.asp?usuario=" + usuario;	
	break;
	case "stremail":
	url = "../Script/ValRef.asp?mail=" + usuario;	
	break;
	case "strCelNum":
	url = "../Script/ValRef.asp?cel=" + usuario;	
	break;
	}
leer_doc(url);	
}

function procesarRespuesta(){
respuesta = req.responseXML;
var existe;
//existe = respuesta.getElementsByTagName("existe").item(0).firstChild.data;
existe = respuesta.getElementsByTagName("existe")[0].firstChild.data;
	if (existe=="true"){
		switch (ValUsu) {
			case "strUsu":
			alert("Nombre de usuario no disponible.");
			document.getElementById("strUsu").focus();
			return;
			case "stremail":
			alert("Esta dirección de correo eléctronico ya fue registrada.");
			document.getElementById("stremail").focus();
			return;
			case "strCelNum":
			alert("Este número de celular ya fue registrada.");
			document.getElementById("strCelNum").focus();
			return;
		}
    }else{
		switch (ValUsu) {
			case "strRefPor":
			alert("El nombre de usuario en el campo Referido por no existe.");
			document.getElementById("strRefPor").focus();
			return;
		}
}
}

Esto contiene el xml
Código:
response.write("<?xml version='1.0' ?><existe>true</existe>")
El I.E. muestra el signo de advertencia al tratar de disparar la funcion; dice error en la pagina, y cuando entre a ver el detalle dice se requiere un objeto y muestro el numero de linea que esta en rojo.

Cuando empece a realizar pruebas con este codigo, aunque daba el mismo error, validaba el campo; para verificar porque sucedia esto coloque un alert(respuesta); luego de la linea en rojo, mostraba dos mensaje con valor null, el tercero mostraba la cabecera del xml y un cuarto en null de nuevo.

Gracias por su tiempo y espero no haber complicado todo con el ultimo parrafo.

Última edición por mash180; 07/02/2011 a las 08:35 Razón: Agregar la info del XML