alex5e
@alex5e

Как организовать обновление данных в progressBar?

Пытаюсь организовать обновление полоски ProgressBar при обработке файла с прайс листом
Вот код на клиенте:
$('.import').on('beforeSubmit', function () {
        var formData = new FormData(this);
        $.fancybox({
            'scrolling'     : 'no',
            'overlayOpacity': 1,
            'closeBtn': false,
            'width': 628,
            'height': 208,
            'helpers' : {
              'overlay' : { 'closeClick': false}
            },
            'autoSize' : false,
            'content' : '<div class=\"progress-striped progress import-progress\" id=\"w0\"><div style=\"width:0%\" aria-valuemax=\"100\" aria-valuemin=\"0\" aria-valuenow=\"10\" role=\"progressbar\" class=\"progress-bar-info active progress-bar\"><span class=\"sr-only\">0% Complete</span></div></div><p class=\"progress-per\">Выполнено 0%</p><p class=\"progress-time\">Осталось 0 минут 0 секунд</p>'
        });
        setInterval(function(){
        $.ajax({
                url: '/admin/price/progress',
                method: 'GET',
                cache: false,
                processData: false,
                headers: {Connection: close},
                mimeType:'multipart/form-data',
                contentType: false,
                dataType: 'json',
                complete: function(res) {
                    var im  = res;
                    var per = (im.row*100/im.totalRow);
                    var sec = 0;
                    console.log(im);
                    $('.progress-striped > div').css('width', per + '%');
                    $('.progress-per').text('Выполнено ' + per + '%');
                    sec++;
                    secEnd = 100 - per * sec;
                    $('.progress-time').text('Осталось ' + secEnd/60 + ' минут ' + secEnd%60 + ' секунд');
                },

            });
            return false;

        }, 1000 );
        $.ajax({
                url: $('form').attr('action'),
                method: 'POST',
                data: formData,
                cache: false,
                processData: false,
                mimeType:'multipart/form-data',
                contentType: false,
                complete: function(res) {
                    $.fancybox.close();
                },
            });
        return false;
    });

В экшине с обработкой прайса
<?php 
...
\Yii::$app->session->set('import', ['row' => $row, 'totalRow' => $highestRow]);
...
?>

В экшине с получением строки, на которой остановился скрипт
return json_encode(Yii::$app->session->get('import'));

Почему то запросы на /admin/price/progress виснут до тех пор, пока не выполнится /admin/price/import

a204cac2ca634ea7922f33f1c81147ea.png

Подскажите, где я ошибся?
  • Вопрос задан
  • 310 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы