Link to home
Start Free TrialLog in
Avatar of minnirok
minnirok

asked on

some progress indicator during http request

Hi,

Does anyone have some sample code for showing a little progress bar when an ajax operation is happening? I have something like:

function StartRequest()
{
    alert("start ajax call");
    httpRequestObject.sendRequest(..);
}

function HandleResponse()
{
    alert("ajax call done");
}

Is there anyway to measure progress of the call to give some visual representation of it? Should I just set an image to say 'loading' in StartRequest(), then hide it whenever HandleResponse() executes?

Any ideas would be great,

Thanks
Avatar of nito8300
nito8300
Flag of United States of America image

place this within the body tag

<div align="left">
  <table>
    <tr>
      <td>
        <div style="BORDER-RIGHT: black 1px solid; PADDING-RIGHT: 2px; BORDER-TOP: black 1px solid; PADDING-LEFT: 2px; FONT-SIZE: 8pt; PADDING-BOTTOM: 2px; BORDER-LEFT: black 1px solid; PADDING-TOP: 2px; BORDER-BOTTOM: black 1px solid">
          <span id="progress1">&nbsp; &nbsp;</span> <span id="progress2">&nbsp;&nbsp;</span> <span id="progress3">&nbsp;
          &nbsp;</span> <span id="progress4">&nbsp; &nbsp;</span> <span id="progress5">&nbsp;
          &nbsp;</span> <span id="progress6">&nbsp; &nbsp;</span> <span id="progress7">&nbsp;
          &nbsp;</span> <span id="progress8">&nbsp; &nbsp;</span> <span id="progress9">&nbsp;
          &nbsp;</span>
        </div>
 </td>
    </tr>
 
  </table>
</div>
<!-- Demonstration -->
<script language="javascript">
var progressEnd = 9;      
var progressColor = '3A76BC';
var progressInterval = 50;

var progressAt = progressEnd;
var progressTimer;
function progress_clear() {
      for (var i = 1; i <= progressEnd; i++) document.getElementById('progress'+i).style.backgroundColor = 'transparent';
      progressAt = 0;
}
function progress_update() {
      progressAt++;
      if (progressAt > progressEnd) progress_clear();
      else document.getElementById('progress'+progressAt).style.backgroundColor = progressColor;
      progressTimer = setTimeout('progress_update()',progressInterval);
}
function progress_stop() {
      clearTimeout(progressTimer);
      progress_clear();
}
progress_update();
</script>
Avatar of raj3060
Some modification to @nito8300's solution..

+++++++++++++++++++++++++
<div align="center">
  <table>
    <tr>
      <td>
        <div style="BORDER: black 1px solid; PADDING: 1px;width:205;height:15;">
          <span id="progress" style="height:15;width:10;"></span>                        
        </div>
 </td>
    </tr>
 
  </table>
</div>
<!-- Demonstration -->
<script language="javascript">
var progressEnd = 100;    
var progressColor = '#DD0000';
var progressInterval = 20;
var spanWidth = 0;
var progressAt = 0;
var progressTimer;
function progress_clear() {    
             document.getElementById('progress').style.backgroundColor = 'transparent';
             spanWidth = 0;
     progressAt = 0;
}
function progress_update() {                  
             progressAt++;
     if (progressAt > progressEnd)
                         progress_clear();
     else
             document.getElementById('progress').style.width = spanWidth;
             document.getElementById('progress').style.backgroundColor = progressColor;
     progressTimer = setTimeout('progress_update()',progressInterval);
             spanWidth += 2
}
function progress_stop() {
     clearTimeout(progressTimer);
     progress_clear();
}
progress_update();
</script>
+++++++++++++++++++++++++

-raj-
ASKER CERTIFIED SOLUTION
Avatar of kernelv12
kernelv12

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Avatar of minnirok
minnirok

ASKER

I have to agree with kernelv12 on this - I've decided to just show an animated gif to indicate something is happening, so please wait, etc.

Thanks