Ver Mensaje Individual
  #1 (permalink)  
Antiguo 25/02/2009, 01:31
Avatar de Dundee
Dundee
 
Fecha de Ingreso: junio-2002
Ubicación: El Médano
Mensajes: 1.310
Antigüedad: 22 años, 6 meses
Puntos: 8
perdiendo horas gracias a explorer

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.