Ver Mensaje Individual
  #1 (permalink)  
Antiguo 28/06/2005, 17:09
Avatar de derkenuke
derkenuke
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: self.location.href
Mensajes: 2.665
Antigüedad: 20 años, 6 meses
Puntos: 45
AJAX: compatibilidad de IE

Holas. No sabia donde incluir esto, porque es de ajax y... Bueno en realidad se centra en javascript, por eso me he decidido por esto

El caso es que tengo un ajax de dos documentos, asi sin mas, experimental:

trabajador.php: Se encarga de recoger los datos de una BD y publicarlos en XML para luego recogerlos.
Código PHP:
<?
    header
('Content-Type: text/xml');
    echo 
'<?xml version="1.0" standalone="yes"?>';
    
$id=$_GET["id"];
    include(
"../include.php");
    
$res=mysql_query("select * from articulos where id=".$id$link);
    
$row=mysql_fetch_array($res);
?>
<articulo>
    <id><?=$row["id"]?></id>
    <titulo><?=$row["titulo"]?></titulo>
    <fechahora><?=f_mysql2normal($row["fechahora"])?></fechahora>
    <categoria><?=$row["categoria"]?></categoria>
    <autor><?=$row["autor"]?></autor>
    <texto><![CDATA[ <?=$row["texto"]?> ]]></texto>
</articulo>
No tiene misterio.

index.php: Este se encarga de hacer las peticiones a trabajador.php
Código PHP:
<?
include("../include.php");
?>


<script language="javascript">

/* se encarga de crear el objeto httpObject */
function nuevoHttpObject(){
    var xmlhttp=false;
    try {
        xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
    } catch (e) {
        try {
            xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
        } catch (E) {
            xmlhttp = false;
        }
    }
    if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
        xmlhttp = new XMLHttpRequest();
    }
    return xmlhttp;
}

function cargarContenido(){
    //alert("cargando...");
    ajax=nuevoHttpObject();
    var elSelect=document.getElementById("elSelect");
    var elArticulo=document.getElementById("elArticulo");
    var elTitulo=document.getElementById("elTitulo");
    var laInfo=document.getElementById("laInfo");
    var laXapa=document.getElementById("laXapa");
    elId=elSelect.options[ elSelect.options.selectedIndex ].value;
    ajax.open("GET", "trabajador.php?id="+elId, true);
    ajax.onreadystatechange=function() {
        if (ajax.readyState==4) {        //listo
            elXML=ajax.responseXML;
            elTitulo.innerText=elXML.getElementsByTagName("titulo").item(0).firstChild.data;
            laInfo.innerText=elXML.getElementsByTagName("fechahora").item(0).firstChild.data;
            laXapa.innerHTML=elXML.getElementsByTagName("texto").item(0).firstChild.data;
        }
    }
    ajax.send(null);
}


</script>

</head>
<body>

<select id="elSelect" size="15" onchange="cargarContenido()">
    <?
        $res
=mysql_query("select id,titulo from articulos order by fechahora desc",$link);
        while(
$row=mysql_fetch_array($res)) {
            
?>
            <option value="<?=$row["id"]?>"><?=$row["titulo"]?></option>
            <?
        
}
    
?>
</select>
Bueno, no lo pongo entero, faltan las capas elTitulo, laInfo y laXapa que presentan la informacion recogida.

El caso es que funciona tanto en Opera como en Firefox a la perfeccion. En IE da un error javascript en estas tres lineas:
Código:
elTitulo.innerText=elXML.getElementsByTagName("titulo").item(0).firstChild.data;
laInfo.innerText=elXML.getElementsByTagName("fechahora").item(0).firstChild.data;
laXapa.innerHTML=elXML.getElementsByTagName("texto").item(0).firstChild.data; 
Es un error que no se como solucionarlo, porque he intentado combinaciones aleatorias sin resultado, y no se como trabajar el XML recibido con javascript.




Si me echais una manita, y encontrais alguna referencia para el XML en javascript estaré mas que satisfecho.

Un saludo y agradecimientos adelantados, que leer este post ya es muxo !
__________________
- Haz preguntas inteligentes, y obtendrás más y mejores respuestas.
- Antes de postearlo Inténtalo y Búscalo.
- Escribe correctamente tus mensajes.