【问题标题】:PHP Progress barPHP 进度条
【发布时间】:2025-12-10 05:35:01
【问题描述】:

我有一个如下所示的表格:

第 1 页:

<form name = "form1" method="post" action = "page2.php">
........
</form>

Page2.php:

<?php

For loop ...
.....
end

?>

现在我想在第 1 页上有进度条,以便它可以在 page2.php 中显示 for 循环的完成进度。

告诉我该怎么做?请不要将我引导到任何进度条,我已经在使用进度,但我不知道如何在其中实现代码,

以下是我目前正在使用的代码

<script type="text/javascript" src="jquery.js"></script> 
<script type="text/javascript" src="jquery.progressbar.min.js"></script> 

$(document).ready(function() { 
$("#spaceused1").progressBar(); 
}); 
HTML:

<span class="progressBar" id="spaceused1">25%</span> 

<a href="#" onclick="$('#spaceused1').progressBar(20);">20</a> 
<a href="#" onclick="$('#spaceused1').progressBar(40);">40</a> 
<a href="#" onclick="$('#spaceused1').progressBar(80);">80</a> 

当我点击上面的链接时它工作正常。但是如何在 page1 上显示它以在 page2.php 上显示 for 循环的进度?

请帮帮我。

【问题讨论】:

    标签: php jquery html css progress-bar


    【解决方案1】:

    Page2.php:

    <?php
    
    for(;;) {
        //In each loop iteration, update your progress and store it in the session
        $_SESSION['myFormProgress'] = myProgressCalculation();
    }
    
    ?>
    

    然后使用AJAX轮询服务器,接收$_SESSION['myFormProgress']的当前值,并相应地更新你的进度条。

    正如 Jonah Bron 所指出的,您还需要使用 AJAX 将表单提交给 Page2.php。否则,您将无法继续在页面上运行 JavaScript(以更新进度条)。当for 循环完成时(并且进度条已满),我怀疑您会希望将用户重定向到可以看到结果的新页面。

    【讨论】:

    • 它将返回什么样的值给 HTML 表单或 javascript 函数?
    • 既然你想填充进度条,一个百分比就足够了。 echo $_SESSION['myFormProgress']; //e.g. returns 0.27 for 27%
    • 所以总的来说,你的意思是我必须使用 AJAX 在页面 1 和页面 2 之间进行通信。页面 2 将在 for 循环的每次迭代中将状态发送到页面 1。是这样吗?
    • 更具体地说,您需要一个“第 3 页”来响应异步查询。 “Page 2”通过将进度存储在$_SESSION 中与“page 3”通信。 “Page 1”异步向“Page 3”请求进度。
    • 实际上它是在drupal中完成的。第 1 页是一个节点,但第 2 页是我添加了 for 循环的 node.tpl.php 文件。它转到其他节点以显示 for 循环的结果。我希望现在你能理解确切的场景并提出一些好的建议。
    【解决方案2】:

    如果我正确理解您的问题,您需要使用 Ajax 提交表单。我没用jQuery,所以不知道怎么用XMLHttpRequest实现进度条。

    【讨论】:

      【解决方案3】:

      通过常规 Ajax 很难做到这一点,您必须稍微修改服务器,因为 PHP 不支持它。

      有一个您可能感兴趣的扩展允许 php 执行此操作。

      模块页面:http://pecl.php.net/package/uploadprogress/1.0.1

      示例:http://svn.php.net/viewvc/pecl/uploadprogress/trunk/examples/

      【讨论】:

      • OP询问文件上传进度。 OP 正在询问长期运行请求的进度。