AJAX - Sólo funciona la primera vez

 
Vista:

Sólo funciona la primera vez

Publicado por luis (4 intervenciones) el 09/06/2008 13:23:33
Hola a todos.

Tengo tres input de texto y un icono. Al pinchar sobre el icono aparece una capa que estaba oculta y que se muestra el resultado de una consulta al servidor. La consulta depende de lo que se haya introducido en los inputs. Mientras termina de ejecutarse la consulta en la capa que acabo de hacer visible aparece un gif animado que indica que está trabajando. Hasta aquí todo funciona perfectamente.

Ahora bien, sólo funciona correctamente la primera vez que pincho en el icono. La segunda vez (y siguientes) la capa no aparece hasta que la consulta ha terminado, mostrando los resultados. Durante el tiempo que la consulta se está ejecutando y que debería aparecer la capa con el gif animado no aparece nada, ni la capa ni, por supuesto, el gif.

Si pongo un alert después de hacer visible la capa, sí que aparece la capa aunque no el gif.

Estoy probando en IE (no me queda más remedio). No lo puedo probar en firefox así que no se si funcionaría allí.

He googleado todo lo que he podido y no he encontrado nada al respecto.

Incluyo el código implicado por si es de utilidad.

target y rpc son variables globales. target es la capa donde se mostrará el resultado de la consulta y rpc es el objeto XMLHttpRequest.

function datosMaquina()
{
rpc = crearXMLHttpRequest();
target.style.visibility = "visible";
rpc.onreadystatechange = procesarEventos;
rpc.open("GET","cgi-bin/busquedaCSI.pl?portal=&place=" + document.csi.place.value + "&vers=" + document.csi.vers.value + "&instancia=" + document.csi.instancia.value + "&destino=&capa=" + target.id.substr(4).toLowerCase(),true);
rpc.send(null);
}

function crearXMLHttpRequest()
{
var xmlHttp=null;
if (window.ActiveXObject)
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
else
if (window.XMLHttpRequest)
xmlHttp = new XMLHttpRequest();
return xmlHttp;
}

function procesarEventos()
{
if (rpc.readyState == 4)
{
target.innerHTML = rpc.responseText;
}
else
{
target.innerHTML = '<div class="tituloCapa"></div> <!-- tituloCapa --><div class="contenidoCapaEspera"><img src="./img/ruedas5.gif" alt="Trabajando..."></div> <!-- contenidoCapa -->';
}
}

Un saludo y gracias anticipadas
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Sólo funciona la primera vez

Publicado por luis (4 intervenciones) el 09/06/2008 13:54:53
Se me olvidaba. El resultado de la consulta es correcto en todos los casos por lo que no creo que sea problema de cache.

Un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Sólo funciona la primera vez

Publicado por luis (4 intervenciones) el 10/06/2008 09:05:55
Hola de nuevo. He conseguido probarlo en el firefox y va como un tiro.

Seguiré investigando.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Solucionado

Publicado por luis (4 intervenciones) el 10/06/2008 09:31:40
Hola. Pese a mi brillante conclusión de que no era la cache, era la cache.
He utilizado un procedimiento indicado en la página
http://www.formatoweb.com.ar/ajax/cache_y_refresco_de_datos.php
sacada de otro mensaje de este foro.

Concretamente he utilizado el procedimiento de introducir un número aleatorio en la consulta.

Un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar