Foros del Web » Programando para Internet » Javascript »

Compatibilidad IE + AJAX

Estas en el tema de Compatibilidad IE + AJAX en el foro de Javascript en Foros del Web. ¡Hola a todos! Ante todo gracias por vuestro tiempo y dejar claro que no tengo demasiada idea de AJAX (estoy empezando). Tengo una duda acerca ...
  #1 (permalink)  
Antiguo 29/05/2012, 23:44
 
Fecha de Ingreso: enero-2012
Mensajes: 49
Antigüedad: 12 años, 10 meses
Puntos: 4
Pregunta Compatibilidad IE + AJAX

¡Hola a todos!


Ante todo gracias por vuestro tiempo y dejar claro que no tengo demasiada idea de AJAX (estoy empezando). Tengo una duda acerca de IE6+ y AJAX:

Estoy actualizando una página WEB e introduciendo un poco de AJAX aquí, CSS allá, etc...

El problema que me encuentro es que mis peticiones XMLHttpRequest sólo me funcionan en Firefox .

El código es el siguiente:

Código Javascript:
Ver original
  1. <script type="text/javascript">
  2. function refrescarContenido(){
  3.     var nombre = document.getElementById("sop").value;
  4.     var ambitoGeneral = document.getElementById("ambG").value;
  5.     var ambitoEspecifico = document.getElementById("ambE").value;
  6.     if (window.XMLHttpRequest){
  7.         // code for IE7+, Firefox, Chrome, Opera, Safari
  8.         xmlhttp=new XMLHttpRequest();
  9.     } else {;
  10.         // code for IE6, IE5
  11.         xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  12.     }
  13.     xmlhttp.onreadystatechange=function(){
  14.         if (xmlhttp.readyState==4 && xmlhttp.status==200){
  15.             document.getElementById("contenido").innerHTML=xmlhttp.responseText;
  16.         }
  17.     }
  18.     xmlhttp.open("GET","tv_soportes_contenido.php?nombre="+nombre+"&medio=TELEVISION&ambitoGeneral="+ambitoGeneral+"&ambitoEspecifico="+ambitoEspecifico+"&Buscar=Buscar",true);
  19.     xmlhttp.send();
  20. }
  21. </script>

Como veréis es algo muy sencillito, tengo un formulario con un input text y varios select, la idea es que según éstos cambien la página se vaya recargando con el evento onChange para los selects y onBlur para el input text.

Como digo en FF funciona, en IE no (he probado en IE6 y en IE9), el código lo he tomado directamente de W3S, ¿alguién ve algo en el código que pueda hacer que IE no interprete mi javascript?

Gracias de nuevo
  #2 (permalink)  
Antiguo 30/05/2012, 00:08
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 17 años, 5 meses
Puntos: 1567
Respuesta: Compatibilidad IE + AJAX

La función Ajax está bién y SI funciona en IE, la probé cargando un archivo html simple. Seguramente el error está en tu php o el resto del html, pero no está a la vista

Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #3 (permalink)  
Antiguo 30/05/2012, 07:32
 
Fecha de Ingreso: enero-2012
Mensajes: 49
Antigüedad: 12 años, 10 meses
Puntos: 4
Respuesta: Compatibilidad IE + AJAX

hmm... interesante...

Gracias por probarlo, así voy descartando cosas...

Éste es el código de php que genera la parte cambiada:

se que es algo lioso por la cantidad de clases y objetos que contiene, mil disculpas

Código PHP:
<?php
include_once("incs/sesion.php");
include(
"tv/config.php");
//ini_set('display_errors', 1);
/*
* parametros:
* $sop SOPORTE BUSCADO POR NOMBRE
* $DIARIOS, $revistas... el tipo de soporte
* $prov: la provincia
*/
include_once("incs/zmgen.php");
include_once(
"djm/TDJMbd.php");
$bd = new TDJMbd();
$bd->open();
$bd->showerror true//CON CONTROL DE ERRORES
include_once("tv/tvbd.php");
$tvbd = new tvbd();
$tvbd->open();
$tvbd->showerror true;
include_once(
"djm/TDJMhtml.php");
$html = new TDJMhtml();
include_once(
"djm/TDJMfmt.php");
$fmt = new TDJMfmt();
include_once(
"djm/TDJMfechas.php");
$fechas = new TDJMfechas();
include_once(
"tv/tvnavi.php");
$tvnavi = new TVNavi;

    
$where "WHERE TIPO = 'TELEVISION' ";
    
    if(isset(
$_GET["nombre"]) && trim($_GET["nombre"] != "")){
        
$nombre $_GET["nombre"];
        
$where .= "AND NOMBRE LIKE '%".$nombre."%' ";
    }
    if(isset(
$_GET["ambitoGeneral"]) && trim($_GET["ambitoGeneral"]!= "")){
        
$ambitoGeneral $_GET["ambitoGeneral"];
        
$where .= "AND CodigoAmbitoGeneral LIKE '%".$ambitoGeneral."%' ";
    } 
    if(isset(
$_GET["ambitoEspecifico"]) && trim($_GET["ambitoEspecifico"] != "")){
        
$ambitoEspecifico $_GET["ambitoEspecifico"];
        
$where .= "AND CodigoAmbito LIKE '%".$ambitoEspecifico."%' ";
    }
    
    
$query "SELECT [idSoporte], [Nombre] FROM [LZM_Grafica].[dbo].[Soportes] ".$where;
      
$result $tvbd->query($query);
    
// Contenido tv_soportes.php
    
$html->beginrow(array("bgcolor"=>"#003366","class"=>"txtnormal","align"=>"center"));
    if (
$where == "WHERE TIPO = 'TELEVISION' ") {
         
$html->celda(array("colspan"=>"4"),"<FONT COLOR=\"#FFFFFF\">Mostrando todos los Soportes</FONT>");
    } else {
        
$cadena "<FONT COLOR=\"#FFFFFF\">";
        if(isset(
$nombre) && trim($nombre) != ""){
            
$cadena .= "Nombre:$nombre<br>";
        }
        if(isset(
$ambitoGeneral) && trim($ambitoGeneral) != ""){
            
//[Nombre] FROM [LZM_Grafica].[dbo].[Ambitos] WHERE [CodigoAmbito] = $ambitoGeneral)
            
$nombreAmbitoGeneral $tvbd->querynombre($ambitoGeneral,"[CodigoAmbitoGeneral]","[Nombre]","[LZM_Grafica].[dbo].[AmbitosGenerales]");
            
$cadena .= "&Aacute;mbito General:".$nombreAmbitoGeneral["Nombre"]."<br>";
        }
        if(isset(
$ambitoEspecifico) && trim($ambitoEspecifico) != ""){
            
//[Nombre] FROM [LZM_Grafica].[dbo].[Ambitos] WHERE [CodigoAmbito] = $ambitoGeneral)
            
$nombreAmbitoEspecifico $tvbd->querynombre($ambitoEspecifico,"[CodigoAmbito]","[Nombre]","[LZM_Grafica].[dbo].[Ambitos]");
            
$cadena .= "&Aacute;mbito Espec&iacute;fico:".$nombreAmbitoEspecifico["Nombre"]."<br>";
        }
        
$cadena .= "</FONT>";
        
$html->celda(array("colspan"=>"4"),$cadena);
    } 
    
$html->endrow();
    
//navegacion -> Configurar
    
$html->beginrow();
    
$tvnavi->configura($query,C_REGISTROS_PAGINA,"normal",$tvbd);
    
$tvnavi->vars = array("nombre"=>$nombre,"ambitoGeneral"=>$ambitoGeneral,"ambitoEspecifico"=>$ambitoEspecifico);
    
$sNavi $tvnavi->navegacion("tv_soportes.php");
    
$html->endrow();
    
    
$html->beginrow();
    
$html->celda(array("class"=>"textopeq"),"<FONT COLOR=\"#FFFFFF\">&nbsp;</font>");
    
$html->endrow();    
    
    
//cabecera
    
$html->beginrow(array("bgcolor"=>"#336699","class"=>"txtnormal"));
    
$html->celda(array("class"=>"textodentro"),"<FONT COLOR=\"#FFFFFF\">Soporte</font>");
    
$html->endrow();
    
$html->InitAlterRows("white","#EAEAEA");
    
    if(isset(
$_GET["tvPrimerReg"])){
        
$tvPrimerReg $_GET["tvPrimerReg"];
    }else{
        
$tvPrimerReg 1;
    }
    
$query $tvnavi->limite($query,$tvPrimerReg,"Nombre");
    
    
$result $tvbd->query($query);
    while(
$row $tvbd->nextrecord($result)){
        
$sColor $html->getAlterColor();
        
$html->beginrowcolor(array("bgcolor"=>$sColor),"#FFFF99",$sColor);
        
$html->celda(array("class"=>"textodentro"),
                       
"<a href=\"".
                       
$html->AddParameterToUrl("tvsoporte.php",
                                                array(
"so" => $row["Nombre"]))."\">".
                                                
$row["Nombre"]."</a>");
        
$html->endrow();
    }
    
$html->beginrow(array("bgcolor"=>"#336699"));
    
$html->celda(array("class"=>"textodentro","colspan"=>"6"),"<FONT COLOR=\"#FFFFFF\"></font>&nbsp;&nbsp;");
    
$html->endrow();
    
//navegacion
    
$html->BeginRow();
    
$html->celda(array("class"=>"textodentro","align"=>"center","colspan"=>"4"),$sNavi);
    
$html->endrow();
    
$html->beginrow(array("bgcolor"=>"#FFFFFF","height"=>"5"));
    
$html->celda(array("class"=>"textopeq"),"<FONT COLOR=\"#FFFFFF\">&nbsp;</font>");
    
$html->endrow();
    
    
$html->beginrow();
    
$html->celda(array("class"=>"textodentro","align"=>"center","colspan"=>4));
    
$html->endrow();
?>
¿Hay algo que IE no pueda interpretar y FF sí?
  #4 (permalink)  
Antiguo 31/05/2012, 09:40
 
Fecha de Ingreso: enero-2012
Mensajes: 49
Antigüedad: 12 años, 10 meses
Puntos: 4
De acuerdo Respuesta: Compatibilidad IE + AJAX

Por favor cierren el tema, me he decantado por usar JQuery con .load() y listo.

Dejo el código por si alguien lo necesita.

Código Javascript:
Ver original
  1. <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js">
  2.     </script>
  3.     <script type="text/javascript">
  4.     <!--
  5.         function refrescarContenido(){
  6.             var nombre = document.getElementById("sop").value;         
  7.             var ambitoGeneral = document.getElementById("ambG").value;
  8.             var ambitoEspecifico = document.getElementById("ambE").value;
  9.             var url = "tv_soportes_contenido.php?nombre="+nombre+"&medio=TELEVISION&ambitoGeneral="+ambitoGeneral+"&ambitoEspecifico="+ambitoEspecifico+"&Buscar=Buscar";
  10.             $("#contenido").load(url);
  11.         }
  12.     -->
  13.     </script>

Más info http://api.jquery.com/load/

Etiquetas: ajax, internetexplorer
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 13:09.