Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP进度条_Php_Jquery_Html_Css_Progress Bar - Fatal编程技术网

PHP进度条

PHP进度条,php,jquery,html,css,progress-bar,Php,Jquery,Html,Css,Progress Bar,我有一个表格,如下所示: 第1页: <form name = "form1" method="post" action = "page2.php"> ........ </form> ........ Page2.php: <?php For loop ... ..... end ?> <?php for(;;) { //In each loop iteration, update your progress and store i

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

第1页:

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

........
Page2.php:

<?php

For loop ...
.....
end

?>
<?php

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

?>

现在我想在第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> 

$(文档).ready(函数(){
$(“#spaceused1”).progressBar();
}); 
HTML:
25% 
当我点击上面的链接时,它工作正常。但是如何在第1页上显示它以在第2.php页上显示for循环的进度呢


请帮助我。

如果我正确理解您的问题,您需要使用Ajax提交表单。我不使用jQuery,因此我不知道如何使用XMLHttpRequest实现progressbar。

Page2.php:

<?php

For loop ...
.....
end

?>
<?php

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

?>

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


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

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

这里有一个您可能感兴趣的扩展,它允许php实现这一点

模块页面:


示例:

它将向HTML表单或javascript函数发送什么样的值?因为您希望填充进度条,所以百分比就足够了<代码>echo$_会话['myFormProgress']//e、 g.返回0.27,占27%所以总的来说,您的意思是我必须使用AJAX在第1页和第2页之间进行通信。在for循环的每次迭代中,第2页将向第1页发送状态。是这样吗?更具体地说,您需要一个“第3页”来响应异步查询。“第2页”通过在
$\u会话中存储进度来与“第3页”通信。“第1页”异步地从“第3页”请求进度。实际上它是在drupal中完成的。第1页是一个节点,但第2页是node.tpl.php文件,我在其中添加了for循环。它转到其他节点以显示for循环的结果。我希望现在你能理解确切的情况,并提出一些好的建议。OP不是要求文件上传进度。OP正在请求长时间运行的请求的进度。