jQuery ajax调用更新进度条

时间:2013-11-29 16:56:34

标签: php ajax asynchronous progress-bar

我目前正在使用ajax调用来启动mysql的大进程!在此过程中,我在数据库中保存了一个百分比值。

在这个Ajax调用PHP脚本之后,我开始另一个调用另一个从数据库中读取该值的php脚本的ajax调用。

所有来电都是异步的!

问题......第二次ajax调用似乎是在第一次完成之后开始的。

function Get815(){
   $('#Pgbar').window('open');
   $('#p').progressbar('setValue', 0);
  getStatus();
  myVar= setInterval('getStatus()', 3000);
  startProcess();

}




function getStatus() {
    $.ajax(
            {
                type: 'GET',
                url: "lib/get_percent.php",
                async: true,
                success:
                    function (jdatos) {
                        data = eval('('+jdatos+')');
                        if(data[0]['result']===true){
                            if(data[0]['data']<parseInt('100')){
                                $('#p').progressbar('setValue', data[0]['data']);
                                return true;
                            }
                        }else{
                            alert('dio false');
                        };

                    }


            });
}


function startProcess() {
    $.ajax(
            {
                type: 'GET',
                url: "815/815.php",
                async: true,
                success: function(jdatos) {
                  data = eval('('+jdatos+')');
                  if(data[0]['result']===true){
                     alert('Finished');
                  }else{
                     alert('Error');

                  }
                }
            });
}

这是Big Process Script的一部分     ..     ..     记录器('计数器'。$ nPercent。'nCounter'。$ nCounter。'nTotal'。$ nTotal);

$stmt = $db->stmt_init();
$stmt->prepare("update `percent` set value=?");
if($stmt===false){ logger('SQL Prepare Error');}
$rc=$stmt->bind_param('s', $nPercent );
if($rc===false){ logger('SQL Bind Error');}
if($stmt->execute()==false){ logger('SQL Execute Error ' . $stmt->error); };
$stmt->close();  
..
..
..
$db->close();
$aReturn[]= array('result'=>true );
exit(json_encode($aReturn));  

记录器功能保存到日志数据库......以这种方式我可以实时看到在此过程中是否正在进行。

现在是get_percent.php的一部分

..
..
$cSelectNodes="select value from percent";
if(!$result1 = $db->query($cSelectNodes))
{
    debug('There was an error running the query [' . $db->error . ']');
    $aReturn[]= array('result'=>false );
    exit(json_encode($aReturn)); 
}
while($row = $result1->fetch_assoc()) {
    $nPercent="";
    $nPercent=$row['value'];
}
$result1->close();
$db->close();

$aReturn[]= array('result'=>true , 'data'=> $nPercent);
exit(json_encode($aReturn));

在815.php完成之后,进度条会被反映,但最后一个百分比来自数据库。

有谁知道为什么会这样?

亲切的问候,

0 个答案:

没有答案