Я использую JavaScript. У меня есть цикл for, который перебирает около 5000 записей каждый раз, когда он вызывает ajax для отправки данных в веб-службу.до сих пор он работает нормально.
, но этот процесс занимает несколько раз, например, 60 секунд или больше.Поэтому мне нужно показать всплывающее окно прогресса.Я создал всплывающее окно JQuery и сделал индикатор выполнения.мой код сначала откроет окно прогресса, начало цикла внутри цикла. Я обновляю прогресс после завершения цикла. Я закрываю окна прогресса.
когда я запускаю код, окна прогресса не отображаются, но когдапетля заканчивается и появляется прямая.как это сделать.
пример кода
function AShowProgressDialog(dialog_name, CtrlListBox, CtrlFromDate, CtrlToDate, title){
$("#" + dialog_name ).dialog({
dialogClass: "no-close",
title: title,
scrollable: false,
height: 120,
width: 550,
resizable: false,
modal: true,
show: 'fade',
hide: 'fade',
closeOnEscape: false,
autoOpen: true,
stack: true,
open: function(event, ui) {
}
});
$("#" + dialog_name ).show();
};
function SubmitProcessRequest(CtrlListBox, CtrlFromDate, CtrlToDate, prProgressTitle){
AShowProgressDialog("pnlProgressCtrl", CtrlListBox, CtrlFromDate, CtrlToDate, prProgressTitle);
var strEmpList = ($.map( $("#" + CtrlListBox + " option"),
function (item, i) {
return $.trim($(item).val()) ;// + "|" + $.trim($(item).text());
}
)).join(", ");
var FromDate = $('#' + CtrlFromDate).val();
var ToDate = $('#' + CtrlToDate).val();
var arrayEmpList = strEmpList.split(',');
var BatchSize = 30;
var count = Math.ceil(arrayEmpList.length / BatchSize);
for (var i = 0; i < count; i++) {
var EmpDataToSend = strEmpList.split(',').slice(i*BatchSize, (i+1)*BatchSize);
SEND DATA TO AJAX;
$("#ctrlProgressBar").width( ((i / count) * 100) + '%');
$("#progressMessage").text( (i*BatchSize) + " of " + arrayEmpList.length);
}
closeDialog("pnlProgressCtrl");
}
это jsfiddle https://jsfiddle.net/kifahnajem/f5yb3e8o/