Foros del Web » Programando para Internet » ASP Clásico »

Response.flush...

Estas en el tema de Response.flush... en el foro de ASP Clásico en Foros del Web. Hola, en mi pagina, normalmente para el codigo HTML generado desde el servidor utilizo Response.write , pero cuando es mucho código, por la comodidad de ...
  #1 (permalink)  
Antiguo 06/11/2007, 05:35
Avatar de PosProdukcion  
Fecha de Ingreso: noviembre-2004
Ubicación: Manzanares el Real (Madrid)
Mensajes: 726
Antigüedad: 20 años, 5 meses
Puntos: 9
Response.flush...

Hola,

en mi pagina, normalmente para el codigo HTML generado desde el servidor utilizo Response.write, pero cuando es mucho código, por la comodidad de ver los colores en el editor de texto y no tener q utilizar dobles comillas dobles, etc lo hago de esta forma:

Código:
%>
Aqui sintaxis HTML pura y dura <%=y alguna variable ASP de vez en cuando%>
y mas HTML
<%
Mi pregunta es si con esta sintaxis también se hace buffer de la respuesta y si al hacer Response.flush se envía esta parte escrita en esta forma.

Estoy teniendo un problema, creo q con el orden de carga y puede estar relacionado con esto. Os pongo el post (q puse en el foro de javascript) por si alguien desde ASP me puede dar alguna pista : Sincronismo en carga de iframes


Gracias
  #2 (permalink)  
Antiguo 06/11/2007, 08:16
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 23 años, 3 meses
Puntos: 146
Re: Response.flush...

Cita:
Mi pregunta es si con esta sintaxis también se hace buffer de la respuesta y si al hacer Response.flush se envía esta parte escrita en esta forma
no entendí.

Al hacer un .flush se manda al cliente el HTML que se haya generado hasta ese momento, libera el buffer del server, etc, etc.

Ví el post de JS y pensé que estabas siendo víctima de tu propio diseño, ya que eso de crear frames dinánicamente no se me hace ..... muy ortodoxo que digamos

Cuál es el problema que quieres resolver de esa forma? por lo que escribes se me hace familiar cuando al trabajar con Ajax quiero hacer cosas con la información del server pero cuando la página se termina de cargar, aún el server no regresa resultados.
  #3 (permalink)  
Antiguo 06/11/2007, 09:56
Avatar de PosProdukcion  
Fecha de Ingreso: noviembre-2004
Ubicación: Manzanares el Real (Madrid)
Mensajes: 726
Antigüedad: 20 años, 5 meses
Puntos: 9
Re: Response.flush...

Pues mi duda es:

¿Se comporta exactamente igual al hacer:

Código:
Response.write("<una ""cosa"" html>");
Response.flush 
que

Código:
%>
<una "cosa" html>
<%
Response.flush 
???
(observa la diferencia de sintaxis)

Cita:
por lo que escribes se me hace familiar cuando al trabajar con Ajax quiero hacer cosas con la información del server pero cuando la página se termina de cargar, aún el server no regresa resultados
Creo que hablamos exactamente del mismo problema, en su día estuve valorando si aprender Ajax o utilizar iFrames, me decidí por los iFrames pq tengo poco tiempo para entregar el proyecto (no quería ponerme a leer manuales de Ajax) y pq no le vi tantas ventajas al Ajax frente a los iFrames, ya que sí, Ajax permite recargar solo parte de una página, pero al redireccionar me redirecciona la página entera, por lo que perdía la flexibilidad de los iFrames

En fin, como dices soy víctima de mi propio diseño, ¿hay soluciones?

Muchas gracias
  #4 (permalink)  
Antiguo 06/11/2007, 11:39
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 23 años, 3 meses
Puntos: 146
Re: Response.flush...

Bueno, Ajax tiene la ventaja de que tiene un método con el cuál donde sabes exactamente cuándo ya regresó resultados, con eso solucioné mi problema. Pero como lo tuyo es con Iframes quizá usando una variable global, actualizandola en el OnLoad y haciendo referencia a ella con alguna sintaxis que desconozco cual sea. Para proporner soluciones necesitaría saber exactamente que estas haciendo.

Referente a la primer pregunta, pues si, si es lo mismo; lo segundo es más rápido que lo primero, pero es lo mismo. Ahora, no confundas el hecho de que el server mande el HTML generado a lo que el browser se tarde en cargar la página, esto último puede estar supeditado a otros factores que en nada tiene ingerencia el servidor, como que el cliente este ocupado haciendo otra cosa (quemando un disco, escuchando musica, procesando algo, cargando otras páginas, autoguardando un excel, etc, etc, y más etc.)

Si puedieras explicar que haces exactamente podríamos ver si se puede hacer de otra forma
  #5 (permalink)  
Antiguo 06/11/2007, 12:05
Avatar de PosProdukcion  
Fecha de Ingreso: noviembre-2004
Ubicación: Manzanares el Real (Madrid)
Mensajes: 726
Antigüedad: 20 años, 5 meses
Puntos: 9
Re: Response.flush...

Bueno, pues intentaré explicarme, creo q no va a ser fácil ....

Tengo un elemento principal compuesto de N sub-componentes

Código:
Pincipal
   - componente 1
   - componente 2
     ------------
   - componente N
Mediante una conexion a BD obtengo los datos de Principal, y mediante otra conexion y un bucle voy obteniendo los datos de cada componente

Código:
conexPrincipal.Query
Response.write("<form con datos principales>")
conexComponente.Query
For i = 0 to NComponentes
    Response.write("<form con datos componente>");
    Response.write("<iFrame onLoad="copiaDatos" src="paginaComponente.asp?Id=id_componente>");
    Response.flush
Next
El javascrript copiaDatos() copia los datos del <form con datos componente> al interior del iFrame, esto lo hago para no hacer una nueva conexion a la BD, ya que son datos que ya he leido. Aquí es donde falla, aunque el procedimiento de BD que me da los datos de componentes tiene un Order BY, el orden en que llegan y se cargan los a veces parece aleatorio y despues del 3er componente deja de cargarlos. EL problema es que si pongo alerts en javascript para ver que está haciendo, entonces si se carga todo bien, pq estoy parando el programa y le da tiempo a cargarse todo.... También he probado con timeouts y bucles para copiar los valores X veces... nada

A las malas se me ocurre hacer una conexion a la BD dentro de cada iFrame, aunque se haga mas lento..

Gracias por la ayuda
  #6 (permalink)  
Antiguo 06/11/2007, 16:36
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 23 años, 3 meses
Puntos: 146
Re: Response.flush...

mmmmmmmm, así a lo rápido, no se me ocurre como pueda la página maestra saber cuándo todos los iframes ya hayan cargado la página correspondiente. Creo que tu problema es candidato idoneo para ser resulto con Ajax, aunque me preocupa eso que mencionaste de necesitar redireccionar la página del iframe, lo que me hace pensar que no es solo para mostrar información.

Si tuviera que mentener forzosamente ese diseño yo implementaría un ciclo en el javascript que corres para actualizar los controles donde no se saliera hasta que alguna bandera estuviera igualada a algo, y que que para alcanzar ese valor todos y cada uno de los objetos de los iframes existieran y fueran actualizados, es decir con varios if como este:

Código:
if(frames['IdDelIframeCorrespondiente'].window.document.getElementById('AlgunDivQueTeSirvaDeReferencia'))
(Si ya se que esa es la sintaxis para IE, habrá que hacer una rutina general)

O puedes hacerlo a la inversa, desde el onoad del ASP de los iframes actualizas algo que el ese ciclo JS estarás revisando, supongo la sintaxis sería algo como:

Código:
parent.window.document.getElementById('ElObjetoActualizable').value=algo
  #7 (permalink)  
Antiguo 07/11/2007, 02:48
Avatar de PosProdukcion  
Fecha de Ingreso: noviembre-2004
Ubicación: Manzanares el Real (Madrid)
Mensajes: 726
Antigüedad: 20 años, 5 meses
Puntos: 9
Re: Response.flush...

Efectivamente, no son solo para mostrar información, los iframes contienen páginas complejas y se utilizan para actualizar la información del componente sin necesidad de enviar TODA la página y recorrer TODOS los componentes para actualizar solo uno (tienes buen ojo), y por este mismo motivo descarté usar Ajax.. ¿Piensas que Ajax podría resolverlo, incluso con submits parciales??

Lo que dices de una bandera para lanzar, ahora mismo hago esa misma comprobacion preguntando si existe el campo que voy a rellenar dentro de un bucle con un temporizador, extrañamente esto no funciona. También había probado a poner una imagen de 1x1 dentro del iframe y poner el evento de copia de valores desde la ventana padre en el onLoad de la imagen en lugar del onLoad del frame...

En fin, también puedo replantearme cambiar el diseño y no hacerlo tan flexible por el lado cliente haciendo más recargas completas de página... Ya veré, de momento creo q voy a dejarlo de lado unos días

Gracias
  #8 (permalink)  
Antiguo 07/11/2007, 08:25
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 23 años, 3 meses
Puntos: 146
Re: Response.flush...

Cita:
los iframes contienen páginas complejas y se utilizan para actualizar la información del componente sin necesidad de enviar TODA la página y recorrer TODOS los componentes para actualizar solo uno
Pero si para eso precisa y exactamente se usa ajax!. No termino de entender que haces, si cambio la palabra componente que usas por control de formulario más o menos entiendo. Supongo vas actualizando alguna tabla conforme van llenando el formulario de la página principal, y si así, claro que se puede usar Ajax; si por otro lado lo que haces es que dependiendo de lo que se capture en un control vas y actualizas otro con alguna información de la BD, pues también claro que se puede hacer con Ajax.

Lo de la bandera ya me hice un ejemplito y funciona perfectamente, lo que hace es lanzar un mensaje cuando el último iframe se ha cargado por completo. Deja hago algunas pruebas más y lo posteo para ver si es algo similar lo que tienes.
  #9 (permalink)  
Antiguo 07/11/2007, 09:31
Avatar de PosProdukcion  
Fecha de Ingreso: noviembre-2004
Ubicación: Manzanares el Real (Madrid)
Mensajes: 726
Antigüedad: 20 años, 5 meses
Puntos: 9
Re: Response.flush...

Bueno, en realidad para mí sigue teniendo sentido lo de los iFrames, ya que son comportamientos diferentes y por lo tanto orígenes diferentes, te adjunto una captura de pantalla por si te aclara algo... Cada "Origen.asp" hace submits independientes y tiene diferentes modos de visualización, es decir, tras la carga, se "reajusta" el layout en función del contenido, este contenido se ha coipado mediante Javascript desde la página principal



Como te digo, me puedo plantear cambiar el diseño e incluso aprender Ajax si voy bien de tiempo con el resto de la aplicación, cosa que de momento no es así , aunque de momento me quedo a la espera de tu ejemplo ...

Gracias
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas (incluyéndote)




La zona horaria es GMT -6. Ahora son las 11:18.