One for you .asp or java boys
OK this is what I want to do..
I have a asp page that executes on the server and punts out the results to a web page on a clients browser.. The asp page takes some time to execute so currently the client browser reports the start of the processing and then the result after a lengthy wait..
So what i want to do is to have a real time progress bar on the client browser relaying how far in percent the asp process is along.
Can this be done, is it simple, quick, easy ?
I'm only interested on this working on IE 5+ and i dont want to have any components required on the client or server end if poss..
cheers if you can help
I have a asp page that executes on the server and punts out the results to a web page on a clients browser.. The asp page takes some time to execute so currently the client browser reports the start of the processing and then the result after a lengthy wait..
So what i want to do is to have a real time progress bar on the client browser relaying how far in percent the asp process is along.
Can this be done, is it simple, quick, easy ?
I'm only interested on this working on IE 5+ and i dont want to have any components required on the client or server end if poss..
cheers if you can help
Don't know about ASP or JAVA but can certainly be done if you build an ISAPI application (I use Delphi).
However, I do not think it is specific to ISAPI so I'm guessing it can be done in ASP.
The way I do it is to "hold" the connection open and send progress info back to the browser as the job progresses. OK, I have it just as text that appears to say "20% Complete" etc. but with that you could easily bang together a progress bar built up using static image files.
By holding it open I mean as soon as the request comes in, you start to send progress info back straight away. Normally, the browser would just wait until you send a whole page back.
I don't know if any of the following will help you, but here is a little bit of Delphi that might help, or at least point you in the right direction:
Request Routine
begin
// Force browser to start listening as soon as request comes in
Response.SendResponse;
// Start sending stuff back straight away. Create top of document
MyStr := '<HTML><HEAD><HEAD><BODY>' ;
// Write it to waiting browser
Request.WriteString(MyStr);
// Start the main progressing
// Output that we are at 20%
MyStr := '20% Complete<BR>';
Request.WriteString(MyStr);
{Lots of processing in here that takes time}
// Output that we are at 40%
MyStr := '40% Complete<BR>';
Request.WriteString(MyStr);
{Lots of processing in here that takes time}
// Output that we are at 60%
MyStr := '60% Complete<BR>';
Request.WriteString(MyStr);
{Lots of processing in here that takes time}
// Output that we are at 80%
MyStr := '80% Complete<BR>';
Request.WriteString(MyStr);
{Lots of processing in here that takes time}
// Output that we are at 100%
MyStr := '100% Complete<BR>';
Request.WriteString(MyStr);
// OK, we are done, finish the document
MyStr := '</BODY></HTML>';
Request.WriteString(MyStr);
end;
I.e you are always dribbling the response back to the browser during the processing rather than just sending one bit page after processing.
Cheers
Ian
[Edited by IWatkins - 5/13/2003 9:07:12 PM]
However, I do not think it is specific to ISAPI so I'm guessing it can be done in ASP.
The way I do it is to "hold" the connection open and send progress info back to the browser as the job progresses. OK, I have it just as text that appears to say "20% Complete" etc. but with that you could easily bang together a progress bar built up using static image files.
By holding it open I mean as soon as the request comes in, you start to send progress info back straight away. Normally, the browser would just wait until you send a whole page back.
I don't know if any of the following will help you, but here is a little bit of Delphi that might help, or at least point you in the right direction:
Request Routine
begin
// Force browser to start listening as soon as request comes in
Response.SendResponse;
// Start sending stuff back straight away. Create top of document
MyStr := '<HTML><HEAD><HEAD><BODY>' ;
// Write it to waiting browser
Request.WriteString(MyStr);
// Start the main progressing
// Output that we are at 20%
MyStr := '20% Complete<BR>';
Request.WriteString(MyStr);
{Lots of processing in here that takes time}
// Output that we are at 40%
MyStr := '40% Complete<BR>';
Request.WriteString(MyStr);
{Lots of processing in here that takes time}
// Output that we are at 60%
MyStr := '60% Complete<BR>';
Request.WriteString(MyStr);
{Lots of processing in here that takes time}
// Output that we are at 80%
MyStr := '80% Complete<BR>';
Request.WriteString(MyStr);
{Lots of processing in here that takes time}
// Output that we are at 100%
MyStr := '100% Complete<BR>';
Request.WriteString(MyStr);
// OK, we are done, finish the document
MyStr := '</BODY></HTML>';
Request.WriteString(MyStr);
end;
I.e you are always dribbling the response back to the browser during the processing rather than just sending one bit page after processing.
Cheers
Ian
[Edited by IWatkins - 5/13/2003 9:07:12 PM]
Thread
Thread Starter
Forum
Replies
Last Post




