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

Ajax: Con asp y xml integrado no funciona...

Estas en el tema de Ajax: Con asp y xml integrado no funciona... en el foro de Frameworks JS en Foros del Web. Hola amigos! pues ya no sé qué más probar. Desde un asp llamo a archivo.xml y funciona pero si llamo desde un asp a otro ...
  #1 (permalink)  
Antiguo 29/08/2006, 06:21
 
Fecha de Ingreso: agosto-2006
Mensajes: 3
Antigüedad: 17 años, 8 meses
Puntos: 0
Ajax: Con asp y xml integrado no funciona...

Hola amigos! pues ya no sé qué más probar. Desde un asp llamo a archivo.xml y funciona pero si llamo desde un asp a otro y éste último tiene escrito el xml no funciona ¿alguna idea?
Este es el código:
INICIOAJAX.ASP

%@ Language="VBScript"%>
<html>
<head>

<script language="javascript" type="text/javascript">
function creaAjax(){
//-------------------------------------------------------------------------------
var objetoAjax=false;
try {
/*Para navegadores distintos a internet explorer*/
objetoAjax = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
/*Para explorer*/
objetoAjax = new ActiveXObject("Microsoft.XMLHTTP");
}
catch (E) {
objetoAjax = false;
}
}

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

function FAjax (url,capa,valores,metodo){
//-------------------------------------------------------------------------------
var ajax=creaAjax();
var capaContenedora = document.getElementById(capa);

/*Creamos y ejecutamos la instancia si el metodo elegido es POST*/
if(metodo.toUpperCase()=='POST'){
document.write="hola pepe";
ajax.open ('POST', url, true);
ajax.onreadystatechange = function() {
if (ajax.readyState==1) { //Petición en carga
capaContenedora.innerHTML="Cargando.......";
}
else if (ajax.readyState==4){ //Petición completada
if(ajax.status==200)
{
document.getElementById(capaContenedora).innerHTML =ajax.responseText;
}
else if(ajax.status==404)
{

capaContenedora.innerHTML = "La direccion existe";
}
else
{
capaContenedora.innerHTML = "Error: ".ajax.status;
}
}
}
ajax.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
ajax.send(valores);
return;
}
/*Creamos y ejecutamos la instancia si el metodo elegido es GET*/
if (metodo.toUpperCase()=='GET'){

ajax.open ('GET', url, true);
ajax.onreadystatechange = function() {
alert(ajax.readyState);
if (ajax.readyState==1) {
capaContenedora.style.visibility="visible";
capaContenedora.innerHTML="Cargando.......";

}
else if (ajax.readyState==4){
capaContenedora.style.visibility="visible";

if(ajax.status==200){

var vxml = ajax.responseXML.documentElement;

//Accedemos al xml recibido

//for (i = 0; i < vxml.getElementsByTagName('mensaje').length; i++){
var item = vxml.getElementsByTagName('mensaje')[1];
var txt = item.getElementsByTagName('texto')[0].firstChild.data; //también se puede escribir así

capaContenedora.style.visibility="visible";
capaContenedora.innerHTML=txt;
//}


}
else if(ajax.status==404)
{
capaContenedora.innerHTML = "La direccion existe";
}
else
{
capaContenedora.innerHTML = "Error: "+ajax.status;
}
}
}
ajax.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
ajax.send(null);
return;
}
}
//---------------------------------------------------------------------------------
</script>
</head>


<body>
<!--<div style="text-align: center;"><form method="get" onsubmit="FAjax('archivo.xml','capaContenedora','' ,'get'); return false" action="#">-->
<div style="text-align: center;"><form method="get" onsubmit="FAjax('ajax.asp','capaContenedora','','g et'); return false" action="#">
<div style="paddi">Campo1:<input type="text" id="campo1" value="valor1" /></div>
<div style="text-align=top;">Campo2:<input id="campo2" value="valor2"></div>
<div><input type="submit" value="enviar"></div>
</form></div>
<div id="capaContenedora" style="visibility:hidden">Capa que recibir&aacute; los datos</div>


</body>
</html>


El código de AJAX.ASP sería:
<%@ Language="VBScript"
response.contentType ="text/xml"%>

<%
response.write ("<?xml version="1.0" encoding=""UTF-8""?><mensaje><texto>Ejemplo 1</texto></mensaje><mensaje><texto>Ejemplo 2</texto></mensaje>")

%>


Si en lugar de ajax.asp creo archivo.xml con el mismo contenido y redirecciono la página a éste funciona! No tengo ni idea de lo que puede pasar, me podéis ayudar por favor? Gracias
  #2 (permalink)  
Antiguo 31/08/2006, 02:56
 
Fecha de Ingreso: agosto-2006
Mensajes: 3
Antigüedad: 17 años, 8 meses
Puntos: 0
Sonrisa solucionado el error, ya funciona!

Pues bien, error tonto, ya lo he visto, el problema estaba en el archivo ajax.asp

Os pongo el ejemplo:

<%@ Language="VBScript"%><%response.contentType="text/xml"%>
<%
response.write ("<?xml version=""1.0"" encoding=""UTF-8"" ?><xml><mensaje><texto>Ejemplo 1</texto></mensaje><mensaje><texto>Ejemplo 2</texto></mensaje></xml>")
%>

¿Qué es lo que estaba mal?
- Por un lado que tenía que cerrar el primer tag y volver a abrir otro, no valía con abrir al principio y cerrar tras el text/xml.

- Ayer también me dí cuenta que el xml estaba mal montado, ya que la etiqueta del nivel superior ha de ser única, así que añadí la etiqueta <xml>
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:46.