0

単純なプログレスバーを設定しようとしていますが、「更新」が実行されますが、「すべての」ajaxリクエストが終了した場合のみですか?

リクエストの開始;

   $(".cb-download").colorbox({
    opacity:.8,
    onComplete:function() {
        $.colorbox.resize();
        if (ERROR !== true) {
           // update Progress
           var progress = setInterval(updateProgress, 100);
      
           $.ajax({
                url: baseUrl + "/mail/do-download",
                async: true,
                success: function(data) {
                    $("#mail-download").html(data);
                    $.colorbox.resize();
                    clearInterval(progress);
                }
            });
        } else {
            $('#mail-download-success').hide();
            $('#mail-download-session-lost').show();
            $.colorbox.resize();
        }
    }
});

function updateProgress()
{
$.ajax({
    url: baseUrl + "/mail/get-progress",
    success: function(data) {
        console.log(data);
        $("#current-count").html(data);
    }
});
}

updateProgessは、数値をエコーするアクションを呼び出しているだけです。

何か案は?

4

1 に答える 1

0

私の解決策を見つけました。

PHP セッションがセッション ファイルをロックしていたため、2 番目の要求が最初の要求 (ファイル ロック) を待っていました。

使ってない

session_write_close(); 

実行時間の長いスクリプトの開始時。進行状況は、セッションではなくデータベース/ファイルに書き込まれるようになりました。非常にうまく機能します。

于 2012-09-13T10:36:27.083 に答える