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 ;)