Ver Mensaje Individual
  #1 (permalink)  
Antiguo 25/02/2006, 10:02
zaqpz
 
Fecha de Ingreso: agosto-2005
Ubicación: Argentina, Capital Federal
Mensajes: 435
Antigüedad: 18 años, 8 meses
Puntos: 2
IE no va al servidor en busca de nuevos datos

Hola chic@s me he aquí con un problema que ha logrado revivir mi molestia hacia el IE.
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 />";
    }
}
?>
El HTML
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="+valortrue);

    
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> 
Mi pregunta es: ¿Por que el IE asume que no hay que ir al servidor por nuevos datos y me trae datos antiguos si mis funciones le dicen claramente que lo haga?

Se agradece de antemano.
Saludos.
__________________
R4DS en español | R4DS en inglés