Публиковать данные в ajax из колбы - PullRequest
0 голосов
/ 13 сентября 2018

У меня есть сценарий загрузки ajax, который вызывается, когда пользователь загружает файл, и все работает просто отлично, и в случае успеха я запускаю некоторые функции, и все хорошо.

Но теперь на мой вопрос:

На стороне сервера в Python он будет выполнять разные действия с загруженным файлом, и я покажу его пользователю. Например, «Компиляция», «Чтение базы данных» и т. Д., И это будет происходить поочередно друг за другом.

$(document).ready(function() {

    $("#chkPassport").click(function () {
        if ($(this).is(":checked")) {
            $("#div_id").show();
        } else {
            $("#div_id").hide();
        }
    });

    $('#uploadform').on('submit', function(event) {
        // Disable upload button when pressed.
        $("input[type=submit]").attr("disabled", true);
        event.preventDefault();

        var formData = new FormData($('#uploadform')[0]);

        $.ajax({
            xhr : function() {
                var xhr = new window.XMLHttpRequest();
                var run_once = 0;

                $("#alertsuccess").hide();
                $("#alertcompile").hide();
                //$('#testa').text(3 + '%');
                $('#progressBar').attr('aria-valuenow', 0).css('width', 0 + '%').text(0 + '%'); 
                $('#progressBar').show();

                xhr.upload.addEventListener('progress', function(e) {

                    if (e.lengthComputable) {

                        console.log('Bytes Loaded: ' + e.loaded);
                        console.log('Total Size: ' + e.total);
                        console.log('Percentage Uploaded: ' + (e.loaded / e.total));

                        var percent = Math.round((e.loaded / e.total) * 100);
                        if(percent > 99 && run_once == 0){
                            $("#alertsuccess").hide();
                            $("#alertsuccess").text("* Finishing up...");
                            $('#alertsuccess').fadeIn('slow');
                            run_once = 1;
                        }
                        $('#progressBar').attr('aria-valuenow', percent).css('width', percent + '%').text(percent + '%');                    
                    }
                });

                return xhr;
            },
            type : 'POST',
            url : '/uploader',
            data : formData,
            processData : false,
            contentType : false,
            success : function() {

                $("input[type=submit]").attr("disabled", false);
                $('#progressBar').attr('aria-valuenow', 0).css('width', 0 + '%').text(0 + '%');
                $("#alertsuccess").text("* Files uploaded succesfully!"); 

                $.ajax({
                    url: '/home',
                    type: 'GET',
                    cache: false,
                    async: false,
                    data: 'state',
                    success : function(){

                        if(state == 1){
                            $("#alertsuccess").text("* OK ALL DONE"); 
                        }
                        setTimeout(function(){
                            $('#alertcompile').fadeIn('slow');
                            $("#alertcompile").text("* Compiling...");    
                        }, 2000);

                        setTimeout(function(){
                            $("#alertcompile").text("* Downloading...");    
                            //downloadFile("http://127.0.0.1:5000/static/downloads/software/test.trf");
                        }, 5000);

                        setTimeout(function(){
                            $("#alertcompile").fadeOut('slow');    
                        }, 7000);

                        setTimeout(function(){
                            $("#alertsuccess").fadeOut('slow');    
                        }, 7500);
                    }
                });

                succsessUpload();

                window.location.href = "/uploader_done";
                $("#alertcompile").hide();
                $('#alertcompile').fadeIn('slow');
            }
        });
    });
});

Прямо сейчас я симулирую ответы с setTimeout. Вместо этого мне нужны реальные данные, но я не знаю, как заставить это работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...