2

バックエンドの実行に最大 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;
}
4

1 に答える 1

1

5 秒ごとにファイルをロードするには、 setInterval関数を使用して xy 秒ごとに関数を呼び出すことができます。

jquery などの JavaScript フレームワークの使用を検討したことがありますか? それらは、プロセス全体を簡素化するためにいくつかの非常に使いやすい ajax メソッドを提供します。「手動で」ajax リクエストを処理することは、私にとって常に「お尻の痛み」です。

于 2012-10-02T06:02:50.013 に答える