3

私は、X 日前のレポートを基本的にオンザフライで再構築する、クライアント用のレポート ツールを使用している最中です。

問題は、レポートが PHP で再構築されていることです。一部のレポートは非​​常に大きく、読み込み時間が 20 ~ 40 秒かかる場合があります。

現時点では、クエリの実行中にページがハングするだけです。

私がやりたいのは、クエリが開始される前に何らかの jquery 読み込みオーバーレイをページに配置し、クエリが終了すると別のページ (結果が表示される場所) にリダイレクトすることです。

クエリを実行する前にhtmlをページにロードする限り、ロード画面が表示され、クエリが終了したら、別のHTMLを配置して別のページにメタリフレッシュを行うことができると考えているのは正しいですか? (ヘッダーはすでに送信されているため、明らかにヘッダーのリダイレクトは問題外です)。

これが正しければ、jquery ベースのローディング プラグインを推奨する人はいますか?

どうもありがとう

4

2 に答える 2

1

よくわからない、あなたが書くことによって何を意味するのか

クエリを実行する前にhtmlをページにロードする限り、ロード画面が表示され、クエリが終了したら、別のHTMLを配置して別のページにメタリフレッシュを行うことができると考えているのは正しいですか? (ヘッダーはすでに送信されているため、明らかにヘッダーのリダイレクトは問題外です)。

しかし、私たちが以前に行ったことを教えてください:

時間のかかる XLS エクスポートのエクスポート ボタンをクリックすると、モーダル オーバーレイが表示され、エクスポートのリクエストが送信されました。その瞬間から、JS は常に特定の名前の Cookie を探していました。サーバー側でエクスポートが生成され、完了後に XLS データとともに Cookie が送信されました。JS は送信された Cookie を認識し、オーバーレイを非表示にしました。

お役に立てれば。

于 2012-08-24T09:45:56.263 に答える
0

PHP 関数の flush() を使用して、出力を画面にフラッシュすることを検討する必要があります。何かが実際に起こっていることをユーザーに示します。flush() を使用して JS/JQuery プログレス バーを設定する方法を示すチュートリアルやコード スニペットがたくさんあります。一例:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html lang="en">
<head>
    <title>Progress Bar</title>
</head>
<body>
<!-- Progress bar holder -->
<div id="progress" style="width:500px;border:1px solid #ccc;"></div>
<!-- Progress information -->
<div id="information" style="width"></div>
<?php
// Total processes
$total = 10;

// Loop through process
for($i=1; $i<=$total; $i++){
    // Calculate the percentation
    $percent = intval($i/$total * 100)."%";

    // Javascript for updating the progress bar and information
    echo '<script language="javascript">
    document.getElementById("progress").innerHTML="<div style=\"width:'.$percent.';background-color:#ddd;\">&nbsp;</div>";
    document.getElementById("information").innerHTML="'.$i.' row(s) processed.";
    </script>';

    // This is for the buffer achieve the minimum size in order to flush data
    echo str_repeat(' ',1024*64);

    // Send output to browser immediately
    flush();

    // Sleep one second so we can see the delay
    sleep(1);
}

// Tell user that the process is completed
echo '<script language="javascript">document.getElementById("information").innerHTML="Process completed"</script>';
?>
</body>
</html>
于 2012-08-24T09:43:19.360 に答える