php 配合 ajax 进度条

$(function(){
    $("#go").click(function(){
        
        go();
    });
    
});
var xmlHttp;
var key;
   var bar_color = "gray";
   var span_id = "block";
   var clear = "   "
   var goCount = 1;
   
function createXMLHttpRequest(){
if(window.ActiveXObject){
 xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}else if(window.XMLHttpRequest){
 xmlHttp = new XMLHttpRequest();
}
}

function go(){
goCount = 1;
createXMLHttpRequest();
checkDiv();
var url="http://192.168.1.37/api/gm/sss?task=create&ts="+new Date().getTime();
var button = document.getElementById("go");
button.disabled = true;
xmlHttp.open("GET",url,true);
xmlHttp.onreadystatechange = goCallback;//
xmlHttp.send(null);
}


function goCallback(){
//    alert(xmlHttp.readyState);
if(xmlHttp.readyState == 4){
 if(xmlHttp.status == 200){
  //处理事件
 
      setTimeout('pollServer("'+goCount+'")',3000);
 }
}
}


function pollServer(goCount){
    //alert(goCount);
    createXMLHttpRequest();
    var url = "http://192.168.1.37/api/gm/sss?task=poll&counter="+goCount+"&key="+key+"&ts="+new Date().getTime();
    xmlHttp.open("GET",url,true);
    xmlHttp.onreadystatechange = pollCallback;
    xmlHttp.send(null);
}


function pollCallback(){
if(xmlHttp.readyState == 4){
 if(xmlHttp.status == 200){
  //处理事件
  var percent_complete=xmlHttp.responseXML.getElementsByTagName("percent")[0]
         .firstChild.data;
  var index = processResult(percent_complete);
  for(var i=1;i<=index;i++){
   var elem = document.getElementById("block"+i);
   elem.innerHTML=clear;
   elem.style.backgroundColor = bar_color;
   var next_cell = i+1;
   if(next_cell>index&&next_cell<=9){
    document.getElementById("block"+next_cell).innerHTML=percent_complete+"%";
   }
  }
  if(index < 9){
   goCount++;
   setTimeout('pollServer("'+goCount+'")',2000);
  }else{
   document.getElementById("complete").innerHTML = "完成!";
               document.getElementById("go").disabled = false;
  }
 }
}
}
function processResult(percent_complete){
var ind;
if(percent_complete.length == 1){
 ind = 1;
}else if(percent_complete.length == 2){
 ind = percent_complete.substring(0,1);
 
}else{
 ind = 9;
}
return ind;
}
function checkDiv(){
    var progress_bar = document.getElementById("progressBar");
    if(progress_bar.style.visibility == "visible"){
         clearBar();
         document.getElementById("complete").innerHTML = "";
    }else{
         progress_bar.style.visibility = "visible";
    }
}
function clearBar(){
    for (var i = 1; i < 10; i++) {
       var elem = document.getElementById("block" + i);
       elem.innerHTML = clear;
       elem.style.backgroundColor = "white";
    }
}

</script>
<body>
 <h1></h1>
 开始 <input type="button" value="开始" id="go" "/>
  <table align="center">
  <tbody>
   <tr><td>
   <div id="progressBar" style="padding:2px;border:solid black 2px;visibility:hidden">
      <span id="block1">&nbsp;&nbsp;&nbsp;</span>
      <span id="block2">&nbsp;&nbsp;&nbsp;</span>
      <span id="block3">&nbsp;&nbsp;&nbsp;</span>
      <span id="block4">&nbsp;&nbsp;&nbsp;</span>
      <span id="block5">&nbsp;&nbsp;&nbsp;</span>
      <span id="block6">&nbsp;&nbsp;&nbsp;</span>
      <span id="block7">&nbsp;&nbsp;&nbsp;</span>
      <span id="block8">&nbsp;&nbsp;&nbsp;</span>
      <span id="block9">&nbsp;&nbsp;&nbsp;</span>
       </div>
       </td></tr>
     <tr><td align="center" id="complete"></td></tr>
      </tbody>
      </table>

      </body>



php:



function sssAction(){

        if($_GET['task']){
            if(isset($_GET['counter'])&&!empty($_GET['counter']))$counter = $_GET['counter'];
            $task = $_GET['task'];
            $res = "";
            if($task == 'create'){
             $res = "<key>1</key>";
             $counter = 1;
            }else{
             $percent = "";
                 switch ($counter) {
                    case 1: $percent = "10"; break;
                    case 2: $percent = "23"; break;
                    case 3: $percent = "35"; break;
                    case 4: $percent = "51"; break;
                    case 5: $percent = "64"; break;
                    case 6: $percent = "73"; break;
                    case 7: $percent = "89"; break;
                    case 8: $percent = "100"; break;
                 }
            $res = "<percent>".$percent."</percent>";
            }
            header("Content-Type:  text/xml");
            $pose = "<response>".$res."</response>";
            echo "<?xml version = '1.0' encoding ='gb2312'?>".$pose;
            
        }exit;
    }


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值