在另一个php页面上运行的进程的一个php页面上显示进度

时间:2014-05-26 10:57:40

标签: javascript php html ajax event-handling

我有一个upload.php页面,用户上传文件,文件转换为HTML文件并存储在服务器上。转换是通过shell_exec()命令执行的。要显示转换进度条,我解析stderr并将进度值传递给javascript函数:

echo "<script>progress(".$base.",".$prog_val.") </script>";

这将javascript函数调用为:

       function progress(base, value) //assigns value and max to progress bar in html

     { 
document.getElementById('prog').value = value;
 document.getElementById('prog').max = base; document.getElementById('progress_indicator').innerHTML = Math.ceil(value)+"/"+base+" pages";
 }

要显示我的进度条:

<progress id = "prog"> </progress> <div id = "progress_indicator"></div>

所有这些都在同一个upload.php页面上。因此,当进程运行时,进度会成功更新,但由于转换在同一个php页面上执行,因此用户无法使用该页面。我想在后台的另一个php页面上运行转换php部分,并在我的upload.php页面上回显“progress(”。$ base。“,”。$ prog_val。“)”。因此,转换在后台运行,而不会在那段时间内阻止upload.php页面。我觉得这可以通过ajax或事件处理程序来实现。

有人可以告诉我这是如何实现的吗?

1 个答案:

答案 0 :(得分:0)

在upload.php页面中使用具有您的操作的外部页面制作jquery ajax,然后将返回的ajax值分配到upload.php页面中的固定div中。