Hola gente una vez más en el navegador Iexplorer 7 no me funciona un sencillo scipt hecho con Ajax (javascript + php) me funciona perfecto con mozilla y no me funciona con explorer, el tema es que he validado mi código Xhtml y el Css y para mi sorpresa aún estando validado no funciona con IE7.
Voy a pegar algo de código (no todo sino sería una locura) que basicamente se divide en 3 partes.
NOTA:TODO ESTO FUNCIONA PERFECTAMENTE CON MOZILLA , el problema es con IE7 , he buscado en google posibles soluciones pero no he encontrado nada.
1 página donde se muestran los resultados en una capa y se hace la llamada a la función proceso() que es la que cambia el contenido de la capa según se pase el ratón por un lugar u otro de una mapa y de unos enlaces que tengo:
Código:
<div id="zonas" style="float:left; width:97px" align="left">
<p><a href="#" onmouseover="proceso(7);" >Tarragona</a></p>
<p><a href="#" onmouseover="proceso(3);" >Barcelona</a></p>
<p><a href="#" onmouseover="proceso(2);" >Sicilia</a></p>
<div >
<div align="center" id="escaparate">
<div id="gallery" >
<div id="inicio" ><p>Seleccione zona del mapa</p></div>
<div id="texto" > </div>
<div id="images" align="left" > </div>
</div>
</div>
funciones Javascript
Código:
// JavaScript Document
function getXMLHTTPRequest() {
try {
req = new XMLHttpRequest();
} catch(err1) {
try {
req = new ActiveXObject("Msxml2.XMLHTTP");
} catch (err2) {
try {
req = new ActiveXObject("Microsoft.XMLHTTP");
} catch (err3) {
req = false;
}
}
}
return req;
}
var http = getXMLHTTPRequest();
//recupera el CatId del botón del menú donde nos hemos posado
function proceso(CatId)
{
// Procede s?lo si el objeto http no est? ocupado
if (http.readyState == 4 || http.readyState == 0)
{
// recupera el nombre escrito por el usuario en el formulario
// name = encodeURIComponent(document.getElementById("myName").value);
// ejecuta la p?gina inicio.php desde el servidor
// CatId = encodeURIComponent(CatId);
http.open("GET", "operations/ajax/intro.php?CatId=" + CatId, true);
// define la funci?n para manejar las respuestas del servidor
http.onreadystatechange = useHttpResponse;
// haz la petici?n al servidor
http.send(null);
}
else
// si la conexi?n est? ocupada, prueba de nuevo despu?s de un segundo
setTimeout('proceso()', 1000);
}
// ejecutado autom?ticamente cuando un mensaje es recibido desde el servidor
function useHttpResponse()
{
// se ejecuta s?lo si la transacci?n se ha completado
if (http.readyState == 4)
{
// estatus de 200 indica que la transacci?n se ha completado correctamente
if (http.status == 200)
{
// extraemos el XML recuperado del servidor
xmlResponse = http.responseXML;
// obtenemos el "document element" (el elemento ra?z) de la estructura XML
xmlDocumentElement = xmlResponse.documentElement;
// obtenemso el mensaje de texto, que est? en el primer hijo de
// el "document element"
// contenido.innerHTML += xmlDoc.firstChild.getElementsByTagName('miembro')[i].getAttribute('idmiembro')+' - ';
// contenido = xmlDocumentElement.firstChild
//http.responseXML.getElementsByTagName("timenow")[0];
title=xmlDocumentElement.getElementsByTagName('name')[0].firstChild.data;
texto=xmlDocumentElement.getElementsByTagName('text')[0].firstChild.data;
imagenes=xmlDocumentElement.getElementsByTagName('imagenes')[0] ;
document.getElementById("inicio").innerHTML =
'<i>' + title + '</i>';
document.getElementById("texto").innerHTML =
'<i>' + texto + '</i>';
//añadimos las imágenes
document.getElementById("images").innerHTML ="";
for (i = 0; i < 3; i++){
img=imagenes.getElementsByTagName('imagen')[i].firstChild.data;
document.getElementById("images").innerHTML +="<img src='images/zonas/thumbs/"+img+"'/>";
}
//xmlDocumentElement.getElementsByTagName('imagen').firstChild.data
//document.getElementById("images").innerHTML =
// '<i>' + imagen + '</i>';//añadimos las imágenes
/* document.getElementById("img").innerHTML =
'<i>' + imagen + '</i>';//añadimos las imágenes */
// reiniciar secuencia
setTimeout('proceso(CatId)', 1000);
}
// un estatus HTTP distinto de 200 indica que ha habido un error
else
{
alert("Ha habido un problema al acceder al servidor: " + http.statusText);
}
}
}
Por último el XML
Código:
<?
header('Content-Type: text/xml');
// generar? la salida XML
// genera el header XML
echo '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>';
// crea el elemento <response>
echo '<response>';
//otenemos los datos de la tabla index para mostrarlos en la portada
include("../../fns/db_fns.php");
db_connect() or die (mysql_error());
$CatId=$_GET['CatId'];
//$query="SELECT * FROM activate WHERE CodeAct='$Id'";
$consulta="SELECT * FROM intro WHERE ZoneId='".trim($CatId)."'";
//echo $consulta;
$images_query="SELECT Link FROM images WHERE Zone='".trim($CatId)."'";
$result=mysql_query($consulta)or die (mysql_error());
$images=mysql_query($images_query)or die (mysql_error());
//$res=db_result_to_array($result);
$res=mysql_fetch_array($result) or die (mysql_error());
$img=db_result_to_array($images) ;
echo "<name>". utf8_encode($res['Name'])."</name>";
echo "<text>".utf8_encode($res['Text'])."</text>";
echo "<imagenes>";
if (count($img)) {
foreach ($img as $row){
echo "<imagen>".trim($row['Link'])."</imagen>" ;
}}
echo "<imagen></imagen>";
echo "</imagenes>";
// cierra el elemento <response>
echo '</response>';
?>
Un saludo y gracias de antemano.