1

我有两页。我将 ajax 调用从第一页发送到第二页以在其中执行 php 代码。
执行需要很长时间(1-2 分钟)。我如何创建进度条并在第一页显示进度百分比。
我可以计算进度百分比,但如何在第一页实时显示。

第一页.php

$.ajax({ url: 'secondpage.php',
         data: {'q': data},
         type: 'post',
         success: function(output) {
                    //some code
            }

第二页.php

    <?php

  // I have some codes here that can calculate progress percent
  // but how to show real time progress percent in firstpage.php

 echo $result;  //final result(for ajax callback)
    ?>
4

2 回答 2

3

flush() 和 ob_flush() 是你的朋友。一起使用这些可以将输出发送到缓冲区。

试试这个我取自 php.net 的例子

header( 'Content-type: text/html; charset=utf-8' );
echo 'Begin ...<br />';
for( $i = 0 ; $i < 10 ; $i++ )
{
    echo $i . '<br />';
    flush();
    ob_flush();
    sleep(1);
}
echo 'End ...<br />';

http://php.net/manual/en/function.ob-flush.php

于 2013-11-11T13:27:11.333 回答
0

我会使用 jquery ui 进度条。 http://jqueryui.com/progressbar/

我会使用 ajax 调用来获取完成的百分比,并使用完成的值在同一页面上更新进度条。您也许可以每 10 秒左右调用一次进度,获取更新,并相应地更新进度条。

于 2013-11-11T14:04:31.857 回答