webForumDet fria alternativet

Response.flush visar inte något

ASPur ASP

8 svar · 366 visningar · startad av mattiasnordin

mattiasnordinMedlem sedan maj 20012 080 inlägg
#1
<%
Response.Buffer = true 
Server.ScriptTimeout = 10 'sekunder 

' INPUT FRÅN ANNAN SIDA
sTillAlbumId = request.querystring("album_id")

' ÖPPNAR DATABASEN
Set connect = Server.CreateObject( "Adodb.Connection" )
connect.Provider = "Microsoft.Jet.OLEDB.4.0"
MdbFilePath = Server.MapPath( "/web2005/fotoalbum/fotoalbum.mdb")	
connect.ConnectionString = "Data Source='" & MdbFilePath & "'"
connect.open
	' HÄMTAR INFORMATION OM VALT ALBUM. Tex namnet
	Query = "SELECT * FROM T_album_namn WHERE ID = " &sTillAlbumId
	'response.write "<hr><b>Hämtar:</b> " &Query &"<hr>"
	set rs = connect.execute(Query)	
	if rs.eof then 
	response.write("ERROR: Troligen är inte några album skapade.")
	else
	varValtAlbum = rs("album_namn")	
	end if

' Sökvägen till fotografierna
varFolderPath = "/photos/" &varValtAlbum &"/"

 response.write ("<center><table width=600><td>")
 response.write ("<font face=verdana size=2><b>Indexera nya bilder...</b><p>")
 response.write ("1) Kontrollerar om filerna på hårdisken (i valt album) finns i databasen...<br>")
 response.write ("Om skriptet inte visar någon mer information än detta så har troligen inte några nya")
 response.write ("bilder hittats.<p>")
 Response.flush() 
...
(+ En massa kod som tar lång tid att exekvera)

Borde inte texten i response.write skrivas ut på en gång i detta exempel ?

Det gör det inte för mig. Först när "Server.ScriptTimeout = 10 'sekunder" triggas så skrivs texten ut. Vad beror det på ?

mattiasnordinMedlem sedan maj 20012 080 inlägg
#2

Inte för att jag vet om det har med något att göra men om jag lägger på ett semikolon i slutet på raden så får jag följande fel:

Microsoft VBScript compilation error '800a0401'

Expected end of statement

/web2005/fotoalbum/hantera_bilder/indexera_nya_bilder.asp, line 35

Response.flush();
----------------^

@ndersMedlem sedan juni 200032 969 inlägg
#3

mattiasnordin skrev:

Inte för att jag vet om det har med något att göra men om jag lägger på ett semikolon i slutet på raden så får jag följande fel:

Nej, det har inte med saken att göra. Förstör du koden så är det klart att du får ett felmeddelande... :o

- - - -

edit: jag tycker nog att det borde fungera som du gjort.Prova enklast möjliga exempel med response.flush och se om det fungerar. Buffer på, skriv ut grejer, kör en fördröjningsloop.

emissionMedlem sedan dec. 19996 721 inlägg
#4

Response.Flush garanterar inte att man kommer att få se något, för tyvärr så kan webbläsaren få för sig att buffra själv, i synnerhet om den tycker att den HTML som den fått inte riktigt ger underlag för korrekt rendering. Se till att du avslutat eventuella tabeller och dylikt, coh prova gärna med att kasta in ett lass stendöd HTML (radbrytningar, mellanslag, bilder på Walter Röhrl etc.) innan raden med Response.Flush

mattiasnordinMedlem sedan maj 20012 080 inlägg
#5

Tackar alla. :)

i synnerhet om den tycker att den HTML som den fått inte riktigt ger underlag för korrekt rendering

Tog jag bort tabellen som inte var avslutad så fungerade det utmärkt.

Bra forum det här!

ObbelixMedlem sedan okt. 2002257 inlägg
#6

Om du vill ha kvar en tabell för designen skull kan du göra på följande sätt:

Skriv först ut html:en, innan all ASP som genererar output.
Gör en div i den cellen du vill ha utskriften och lägg till detta javascriptet

<html>
<head>
<script language="javascript">
  function WriteLog(logstr){
    document.getElementById("log").innerHTML = document.getElementById("log").innerHTML + logstr;
  }
</script>
</head>

<body>
 <table width="600" border="0">
  <tr>
   <td><div id="log"></div></td>
  </tr>
 </table>
</body>
</html>

Sen har jag gjort en funktion (som jag kallat echo)

Function echo(sMess)
 response.Write("<script language=""javascript"">WriteLog('" & sMess & "')</script>" & vbcrlf)
 response.Flush()
end function

Och när jag vill få ut text kallar jag på funktionen med typ:

echo("Test")
mattiasnordinMedlem sedan maj 20012 080 inlägg
#7

Najs !

Gillade det där !!!

Erik JuhlinMedlem sedan maj 200010 687 inlägg
#8

Nu när JavaScript är så vackert och smidigt så bör man utnyttja det fullt ut!

document.getElementById("log").innerHTML += logstr;

Wohoo! :D

ObbelixMedlem sedan okt. 2002257 inlägg
#9

Det har du rätt i :)

127 ms totalt · 3 externa anrop · v20260731065814-full.29ac60f6
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
124 ms — hämta tråd, inlägg och bilagor (db)