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


0