mattiasnordinMedlem sedan maj 20012 062 inlägg
Jag har en Vbscript loop (ASP) som tar lång tid att loopa pga en långsam komponent som anropas i loopen. Det jag skulle vilja uppnå är att när loopen har kört ett varv så ska tex ett javascript ändra på ett layer på sida B. Loopsidan (B) öppnas från sida A genom en knapp.
Är detta möjligt att uppnå på något sätt?
Min nuvarande sida tar ca 90 sekunder att ladda och allt visas först när allt har loopat klart. Det försöker jag ändra på.
Erik JuhlinMedlem sedan maj 20007 625 inlägg
Är inte säker på om det går, men kanske...
<script type="text/javascript">
function doThatThing(i)
{
//gör något...
}
<%
For i = 0 To 100
'gör väldigt tung grej
%>
doThatThing(<%=i%>);<%
Response.Flush
Next 'i
%>
</script>
Erik JuhlinMedlem sedan maj 20007 625 inlägg
Testade lite nu, det funkade inte. Men det här gjorde det:
<%
Option Explicit
Response.Buffer = True
Response.Expires = -1000
Dim i, j
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title></title>
</head>
<body>
<div id="x"></div>
<script type="text/javascript">
function doThatThing(i)
{
document.getElementById("x").innerHTML = i;
}
</script>
<%
For i = 0 To 5
For j = 0 To 10000000
'...
Next 'j
%>
<script type="text/javascript">
doThatThing(<%=i%>);
</script><%
Response.Flush
Next 'i
%>
</script>
Done!
</body>
</html>
mattiasnordinMedlem sedan maj 20012 062 inlägg
<hr>
<script type="text/javascript">
function doThatThing(i){
document.write(i) //gör något...
}
</script>
<%
For i = 0 To 5
'gör väldigt tung grej
Set oPing = Server.Createobject("Dynu.Ping")
Response.Write(oPing.Ping("www.dynu.com", 2, 32, 1000))
Set oPing = nothing
%>
<script type="text/javascript">
doThatThing(<%=i%>);
</script><p>
<% Response.Flush
Next 'i
%>
Vad häftigt!!! Jag har aldrig använt mig av response.flush tidigare. Det fungerar precis som jag vill ha det.
Finns det någon nackdel med att använda response.flush ?
Tack Erik Julin... very glad now. :) :) :)
Erik JuhlinMedlem sedan maj 20007 625 inlägg
Några nackdelar finns väl. Kan tänka mig att det blir aningen sämre prestanda. Sen så går det ju inte att skriva ut headers (Response.Redirect och annat) efter första flushen.
Men mycket bra att använda den i vissa fall. Som här! :)
I ditt fall ser det ju ut som att du inte behöver använda JavaScript alls. Bara skriva ut något varje rad...
mattiasnordinMedlem sedan maj 20012 062 inlägg
Ok.
Jag har bara bifogat ett exempel ovan. Min "sega sida" är betydligt mer krånglig. Det jag gör är att jag lägger en bild (karta över världen) i ett layer. Sedan har jag en massa blinkande gifanimeringar som blinkar om jag har kontakt mellan 2 punkter. Har jag inte access till slutdestinationen så startas en ny funktion som pingar alla routrar på vägen för att se var felet ligger.
Resultatet blev både snyggt och bra. Nu går det acceptabelt snabbt också. :) :) :) :)