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
!