Tengo un input en el cual se ingresan datos, se presiona un "OK" y esos datos son enviados a mi base de datos sin recargar. Luego al lado tengo un boton el cual al presionarlo se despliega una lista con todas las entradas contenidas en esa base de datos. Esto va perfecto en Mozilla Firefox, pero en IE cuando ingreso un dato y no recargo (en realidad hasta q no lo cierro y lo vuelvo a abrir), luego al cliquear el botón no aparece esa nueva opción en la lista sino las que habia anteriores al/los ingreso/s.
He colocado banderas para localizar el problema y he descubierto que a pesar de que el IE debería ir al servidor en busca de los nuevos datos, nunca lo hace y me trae el listado con los datos de el "click anterior".
Mi problema es similar el de este post: http://www.forosdelweb.com/f127/por-que-no-actualiza-368570/ que no obtuvo respuestas.
Mi codigo simplificado es el siguiente:
El proceso
Código PHP:
<?php
$entrar=$_GET["ingreso"];
if($entrar)
{
$coneccion=mysql_connect("localhost", "root", "") or die(mysql_error());
mysql_select_db("ajax", $coneccion) or die(mysql_error());
mysql_query("INSERT INTO autocompletador (nombre) VALUES ('$entrar')");
}
if($_GET["datos"])
{
$coneccion=mysql_connect("localhost", "root", "") or die(mysql_error());
mysql_select_db("ajax", $coneccion) or die(mysql_error());
$consulta=mysql_query("SELECT * FROM autocompletador");
while($registro=mysql_fetch_row($consulta))
{
echo $registro[1]."<br />";
}
}
?>
Código PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<script language="javascript">
function nuevoAjax()
{
/* Crea el objeto AJAX. Esta funcion es generica para cualquier utilidad de este tipo, por
lo que se puede copiar tal como esta aqui */
var xmlhttp=false;
try
{
// Creacion del objeto AJAX para navegadores no IE
xmlhttp=new ActiveXObject("Msxml2.XMLHTTP");
}
catch(e)
{
try
{
// Creacion del objet AJAX para IE
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
catch(E) { xmlhttp=false; }
}
if (!xmlhttp && typeof XMLHttpRequest!='undefined') { xmlhttp=new XMLHttpRequest(); }
return xmlhttp;
}
function nuevoDato()
{
var div=document.getElementById("div"), campo=document.getElementById("input_1");
var valor=campo.value;
ajax=nuevoAjax();
ajax.open("GET", "prueba_proceso.php?ingreso="+valor, true);
ajax.send(null);
}
function muestra()
{
var div=document.getElementById("div");
div.innerHTML="";
ajax=nuevoAjax();
ajax.open("GET", "prueba_proceso.php?datos=si", true);
ajax.onreadystatechange=function()
{
if (ajax.readyState==4)
{
div.innerHTML=ajax.responseText;
}
}
ajax.send(null);
}
</script>
</head>
<body>
<input type="text" id="input_1" />
<input id="boton_1" onClick="nuevoDato();" type="button" value="Ok" />
<div id="div"></div>
<br /><br />
<input id="boton_2" onClick="muestra();" type="button" value="Mostrar" />
</body>
</html>
Se agradece de antemano.
Saludos.