2

我们使用 ajax 调用将数据发送到服务器。服务器端编程是使用 Perl 将数据保存到数据库中完成的。

由于我们有很大的文件,我们希望显示一个进度条,告诉用户发布到服务器的百分比数据。如何使用 Ajax 和 Perl 实现这一点?

提前致谢。

4

3 回答 3

3

在高层次上,我可能会通过在display: block页面上放置一个具有彩色背景(或者可能是图像)且宽度为零的空元素来做到这一点,然后定期向服务器运行 AJAX 回调以获取进度更新并增加元素的相应的宽度。(我怀疑 COMET 会是一种更有效的方式来处理这类事情,因为我读过的描述表明它是 AJAX 的服务器推送版本,所以它会消除轮询开销,但我没有真的调查了彗星,所以我可能会误解它。)

在低层次上,实现这一点的实际代码很大程度上取决于您如何执行 AJAX。您使用的是JQueryCGI::Ajax、不同的模块(CPAN 或其他),还是您自己的手动 AJAX 处理代码?

于 2009-06-28T10:47:05.697 回答
3

有几个预先编写的脚本可以实现这一点:

于 2009-06-28T11:09:09.910 回答
2

使用 Comet:推送更新页面中进度条元素的定期 Javascript 标记。您还需要发送额外的空格以便浏览器更新页面(在 Perl 中找到 PHP 的 flush() 的等效项)。

例如,每上传 10% 的数据,推送

<script type="text/javascript">progressBar(10)</script>
<script type="text/javascript">progressBar(20)</script>
...
<script type="text/javascript">progressBar(100)</script>

哪里progressBar(percentage)是更新进度条宽度的函数(我假设您在页面上有 jQuery):

function progressBar(percentage) {
    $('#progressbardiv').css('width', percentage + 'px');
}
于 2009-06-28T11:10:04.947 回答