バックエンドの実行に最大 10 分かかる可能性のあるスクリプトを埋め込んでいる Web ページがあります。
タイマーを使用して、さまざまなバージョンの ajax スクリプト ローダーを試しました。
必要なもの: ページの読み込み時に、メインの作業スクリプトを実行するようにトリガーする必要があります。このスクリプトの最後の行は、ユーザーのファイル名を持つ一意のテキスト ファイルをフォルダーに作成し、スクリプトが完了するとファイルが表示されるようにします。
また、ページの読み込みからもトリガーされ、10 秒ごとに 2 番目のスクリプトを読み込む AJAX 関数になります。この秒のスクリプトは非常に最小限であり、ユーザー ファイル (上記のスクリプトから) が指定されたディレクトリにあるかどうかを確認します。
ファイルがまだそこにない場合 (スクリプトがまだ機能している場合)、エコーします。
<img src"../loading.gif">
ファイルがそこにある場合 (スクリプトが終了した場合)、リンクをエコーします (または別のページへのヘッダーかもしれませんが、まだ決めていません)...
これは、ページの読み込み時にメイン処理スクリプトが開始し、ajax スクリプト (読み込み中の画像を即座に表示する) をトリガーし、メイン スクリプトの実行が完了すると、読み込み中の画像がリンクに変わることを意味します (または単に別のページにリダイレクトします)
できるだけ多くの情報を提供するために結んでいます...
ps、バックグラウンドで動作するように ajax 関数を呼び出してメイン処理スクリプトを呼び出すには、簡単なロードが必要になると思います。そうしないと、メイン ページのロードに時間がかかります。
私の最近の試み:
function MakeRequest()
{
var xmlHttp = getXMLHttp();
xmlHttp.onreadystatechange = function()
{
if(xmlHttp.readyState == 4)
{
HandleResponse(xmlHttp.responseText);
}
}
xmlHttp.open("GET", "processing_script.php?user=<?php echo $_SESSION['user']; ?>", true);
xmlHttp.send(null);
}
function HandleResponse(response)
{
document.getElementById('ResponseDiv').innerHTML = response;
}