データベースにチケットを含む冊子を作成する必要があります。ブックレットの数は、ユーザーがテキストボックスに入力する内容によって異なります。 1冊の小冊子には100枚のチケットがあります。このブックレット/チケットの作成には時間がかかるので、エンドユーザーに進捗状況を示す必要があります。この目的のために、私はajax呼び出しをループに入れ、成功の際にプログレスバーをインクリメントします。ループ内で同じajaxコールを呼び出す
私は最初のajax呼び出しの成功メソッドを待ってから別のものを作成しようとしています。しかし、このコードはsuccessメソッドには決して行きませんが、コードは単一呼び出しのループなしで正常に動作しています。ループが無期限に実行されていることにも気付きました。どのようにそれを修正するには?
Ajax呼び出し:
var number_of_booklets = 1;
var progress = 0;
var progressIncrement = 100/number_of_booklets;
while (i < number_of_booklets) {
if (i == index) {
index++;
bCalled = true;
$.ajax
({
type: 'post',
url: "/Booklet/AddBooklet",
data: { 'booklet': booklet },
success: create_booklet_success,
failure: create_booklet_error,
timeout: 180000
});
}
}
成功方法:
function create_booklet_success(response)
{
i++;
progress = progress + progressIncrement;
$('#progressbarVal').html(Math.round(progress).toString()+"%");
$('.progress-bar').css('width', progress + '%').attr('aria-valuenow', progress);
if (progress == 100)
{
$('.content-wrapper').removeClass('whirl duo');
$("#progressbarModal").modal('hide');
}
//console.log(progress);
console.log(i)
}
'data'を配列として保存し、すべての「ブックレット」などを一度に送信しようとしましたか? – VTodorov
私は試してみました.Ajaxコールには20分かかるので、その間にエンドユーザーに何かを表示する必要があります。 –
@ NoumanBhattiその進捗状況はどうかわかりません...サーバーからのタスクの進捗状況を表示する必要がありますか?私がここで見ていることは、あなたが複数のajax呼び出しを行っていることと、実行されるべき呼び出し回数について進捗状況を示すことです。 – Salketer