<%
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å ?
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
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 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
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 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")
Nu när JavaScript är så vackert och smidigt så bör man utnyttja det fullt ut!
document.getElementById("log").innerHTML += logstr;
Wohoo! :D