Ver Mensaje Individual
  #5 (permalink)  
Antiguo 04/02/2009, 08:32
richard07
 
Fecha de Ingreso: abril-2007
Mensajes: 6
Antigüedad: 18 años
Puntos: 0
Respuesta: ASP + Excel + Pantalla de espera

Lo que pasa con el Response.flush es que obliga al servidor a enviar lo que tiene cargado en el cache, esto no me sirve ya que si quiero mostrar una pagina completa (header-body-footer) no lo hace ya que no tiene todo cargado. Aqui te muestro la pagina principal, como veras tiene implementado el objeto XMLHTTPRequest, al cargarse la pagina llama a la funcion que hace la peticion a la pagina que realiza la consulta y exportacion a excel mientras muestra el mensaje con un gif de espera. Una vez realizada la exportcion (que no la hace) me redirecciona a otra pagina que contiene un mensaje que le avisa al usuario que el proceso finalizo. El problema para mi esta en que al no devolver nada ni en los header o en la URL el objeto XMLHTTPRequest interpreta como que no sucedio nada. Aqui el codigo:

Código:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
	<link rel="stylesheet" type="text/css" href="style.css">
	<title>INDEX</title>
	<script language="javascript" type="text/javascript">
		function handleHttpResponse() {
			if (http.readyState == 4) { // completado
			   if (http.status == 200) { // OK
				 location.href='fin.asp'
				 enProceso = false;
			   }
			}
		}

		function realizaConsulta() {
			if (!enProceso && http) {
			   var url = "excel.asp";
			   http.open("GET", url, true);
			   http.onreadystatechange = handleHttpResponse;
			   enProceso = true;
			   http.send(null);
			}
		}

		function getHTTPObject() {
			var xmlhttp;
			/*@cc_on
			@if (@_jscript_version >= 5)
			   try {
				  xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
			   } catch (e) {
				  try {
					 xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
				  } catch (E) { xmlhttp = false; }
			   }
			@else
			xmlhttp = false;
			@end @*/
			if (!xmlhttp && typeof XMLHttpRequest != 'undefined') {
			   try {
				  xmlhttp = new XMLHttpRequest();
			   } catch (e) { xmlhttp = false; }
			}
			return xmlhttp;
		}

		var enProceso = false; // lo usamos para ver si hay un proceso activo
		var http = getHTTPObject(); // Creamos el objeto XMLHttpRequest
	</script>
</head>
<body onLoad="realizaConsulta()">
	<div id="contenedor">
		<div id="cabecera">
			<img src="images/header_internet.jpg" width="775" height="128">
		</div>
		<div id="cargando">
			<p>Procesando datos. Por favor espere...</p>
			<img src="images/loading.gif">
		</div>
		<div id="pie">Copyright &copy; 2008</div>
	</div>
</body>
</html>