У меня есть сценарий загрузки 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
. Вместо этого мне нужны реальные данные, но я не знаю, как заставить это работать.