0

我有一个需要 5 分钟才能生成报告的过程,用户想知道发生了什么,但屏幕上什么也没有发生。我没有使用 AJAX 提交。

function par_makeHttpObject() {
    try {
        return new XMLHttpRequest();
    }
    catch (error) {}
    try {
        return new ActiveXObject("Msxml2.XMLHTTP");
    }
    catch (error) {}
    try {
        return new ActiveXObject("Microsoft.XMLHTTP");
    }
    catch (error) {}
    throw new Error("Could not create HTTP request object.");

jQuery有没有办法让Progressbar运行假装正在发生的事情,直到结果回来。

在后端,我使用 Python 和 CherryPy。

任何帮助将不胜感激 DK

4

1 回答 1

0

使用@KevinB 的建议,我以不同的方式解决了这个问题:

1.- 我创建了一个“Progressbar.gif”图片,看起来像我想要的酒吧

在此处输入图像描述

2.-我添加了一个图像标签,如下所示:

<img id="progressbar1" height="6" src="/static/Progressbar.gif" style="position: relative; left:-273px; top:6px; width:0px;"/>

3.- 以及一个微小的 jQuery 动画,它对效果进行排序,呈现出正在进行的过程。

$("#progressbar1").animate({"width": "70px"}, 500,
        function() {$("#progressbar1").animate({"width": "350px"}, 800,
            function() {fetchExportReport(xpLoc,xpFunds,xpPcnt,reGen);
        });

而且由于这个过程需要一些时间,所以在开始时稍微展示一下动作可能会让人有足够的信心相信它会在一段时间后完成。

这是一种折衷方案,但是如果要连续更新进度,则进行需要很长时间的 SQL 查询会阻止更新屏幕的回滚。所以我不得不妥协。有些进程不能中断。

丹麦

于 2013-06-09T02:33:38.423 回答