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 を使用して、結果が返されるまで何かが起こっていることを偽ってプログレスバーを実行したままにする方法はありますか?

バックエンドでは 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 クエリを作成すると、カムバックが画面を更新できなくなります。だから妥協せざるを得なかった。一部のプロセスは中断できません。

DK

于 2013-06-09T02:33:38.423 に答える