1

これがかなり単純な答えである場合は申し訳ありませんが、私はしばらくそれで立ち往生しています。現在、ユーザーがさまざまな方法で画像、音声ファイル、およびテキストを追加できる XML ファイルがあります。ファイルが大きくなった場合に備えて、ページに進行状況バーが必要になるようにしたいと思います。

アップロード用、PHP ファイル用、およびそれらのスタイル設定用のプログレス バーの作成に関する多数のチュートリアルを見つけましたが、読み取られて処理された XML ファイルの割合を監視するためのチュートリアルは見つかりませんでした。このチュートリアルと組み合わせてコードを機能させようとしましたが、うまくいきませんでした。

私の単純な AJAX 呼び出し:

$(document).ready(function() {
    $.ajax({
        type: "GET",
        url: xmlTitle,
        dataType: "xml",
        success: parseXML
    });
});

parseXML は、XML ファイルを読み取り、それを HTML に適切に表示する機能です。

基本的に、コードに進行状況バーを自動的に表示させ、成功すると進行状況バーを非表示にしてコンテンツを表示したいと考えています。

これに間違った方法でアプローチしている場合は、他の提案も受け付けています。簡単な質問で申し訳ありませんが、回答よろしくお願いします。

4

2 に答える 2

2

これで十分です:

$(document).ready(function() {
    showProgressBar();
    $.ajax({
        type: "GET",
        url: xmlTitle,
        dataType: "xml",
        success: parseXML
    });
    function parseXML(xml){
        hideProgressBar();
        ...
    }
});

アップロードの実際の進行状況でプログレスバーを実際に更新したい場合は、xhr.upload.progressイベントとイベントを使用する必要がありますxhr.progress。IE<10 で動作させるための回避策がないため、どちらも jQuery で実装されていません。

于 2013-04-15T19:13:08.420 に答える
1

Websocket に移行できれば、シングル スレッドでデータ転送を管理する能力が向上すると思います。

従来の ajax が必要な場合は、アップロードの進行状況に通常使用されるものと同様のアプローチが必要だと思います。

http://phpmaster.com/tracking-upload-progress-with-php-and-javascript/

基本的には、サーバーをポーリングして、転送がどれくらい進んでいるかを尋ねてから、それをユーザーに報告します。したがって、別の小さなエンドポイントを同時にポーリングしながら、大きな ajax リクエストを行うことになります。サーバーは、アップロードの進行状況をユーザー セッションの一部として保持します。

于 2013-04-15T19:14:10.320 に答える