Ver Mensaje Individual
  #1 (permalink)  
Antiguo 10/03/2012, 08:00
nitsuga1986
 
Fecha de Ingreso: octubre-2008
Mensajes: 91
Antigüedad: 16 años, 1 mes
Puntos: 0
AJAX mal funcionamiento en IE

Se que este tema es muy comentado y hay miles de cosas en google, pero he intentado hacer lo que he visto en tutoriales, sobre todo este:
http://www.formatoweb.com.ar/ajax/ca...o_de_datos.php
y sigue sin funcionarme en IE.

Mi problema es simple, tengo los dos tipicos select con provincia y localidad, y en el onchange de provincia, cuando cambio de opcion, se llama a un AJAX que busca las localidades y las carga en el select, os dejo el code:

Este code, carga el select de provincias, cogiendo los resultados por SQL (simple), funciona en IE :)
Código HTML:
<select name="provincia_combo" onclick="recargarLocalidades(this.value,'localidad_combo'); return false;">
     <option selected value="">Cualquiera</option>
	<?php
		conectar();
		$rs = mysql_query("Select id,nombre from provincia order by nombre ASC");
		desconectar();
		while($res = mysql_fetch_array($rs)){
		?>
			<option value="<?php echo $res['id'];?>"><?php echo $res['nombre'];?></option>
		<?php
		}
		?>
</select> 
El problema esta al llamar a la funcion de recargarLocalidades, es esta:
Código HTML:
function recargarLocalidades(provincia,combo,localidad){
     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();
	}

		xmlhttp.open("GET",'ajax/archivo_ajax_1.php?provincia='+provincia+'&localidad='+localidad,true);
		xmlhttp.onreadystatechange=function() {
			if (xmlhttp.readyState==4) {
				document.getElementById(combo).innerHTML =xmlhttp.responseText ;
			}
		}
		xmlhttp.send(null);		
}
Como veis, la funcion llama a archivo_ajax_1.php pasandole la provincia por GET, y aqui pongo el ajax:

Código PHP:
<?php
header
("Cache-Control: no-store, no-cache, must-revalidate");
header("Content-Type: text/html;charset=utf-8");
    include(
"../config.php");
    
$conexion mysql_connect($host_bd,$user_bd,$pass_bd);
    
mysql_query("SET NAMES 'utf8'");
    
mysql_select_db$basedatos_bd$conexion);    
    
    
$cadena ='';
    
    
$rs mysql_query("select id,nombre from localidad where provincia='".$_GET['provincia']."'",$conexion);
    while(
$res mysql_fetch_array($rs)){
        if(isset(
$_GET['localidad'])){
            if (
$res['id'] == $_GET['localidad']){    
                
$cadena.='<option selected="selected" value="'.$res['id'].'">'.$res['nombre'].'</option>';
            }else{ 
                
$cadena.='<option value="'.$res['id'].'">'.$res['nombre'].'</option>';
            }
        }else{
            
$cadena.='<option value="'.$res['id'].'">'.$res['nombre'].'</option>';
        }    
    }
    
    echo 
$cadena;
?>
La primera linea del ajax, la he sacado del tutorial que os puse antes, se supone que la cache en IE solo carga la primera vez, y a partir de ahi, siempre carga de memoria, por esa razon pensaba que me devolvia siempre vacio (es decir, no me rellenaba el select de localidad). Tras ponerle esa linea, sigue sin mandarme el resultado el ajax desde IE, como puedo solucionarlo?

Un saludo, y gracias ;)