Приведу часть кода сразу, голова уже не варит. Получив ссылку на фтп другого сервера, копирую файл к себе, а затем отправляю на 3й сервер.
Суть вопроса - мне нужно отправив файл на копирование на мой сервер отслеживать прогресс. Но ajax запрос внутри функции InfoFileSize не выполняется, пока не завершен основной запрос в котором идет копирование. Шо делать?!
function InfoFileSize(namefile, sizeLoad, id, str, err) {
$.ajax({
url: "?mod=edit2&p=info",
type: 'POST',
cache: false,
data: "namefile=" + namefile + "&size=" + sizeLoad,
success: function(data) {
if ( data.length > 4 && err == 'err') {
var DataUrl = data;
$.ajax({
type: 'POST',
async: false,
cache: false,
data: "url=" + DataUrl,
url: "?mod=edit2&p=copy",
success: function(data) {
str.html('Копирование...');
setTimeout(ajaxwithi(id, data, str, DataUrl), 5000);
},
error: function(request, status, error) {
str.html('error3 InfoFileSize:' + status + ',' + error);
},
dataType: 'json'
});
clearInterval(timer);
} else {
str.html("Скопировано " + data + ".");
}
},
error: function(request, status, error) {
str.html('error6:' + status + ',' + error);
}
});
}
// мне нужно отправить файл на копирование и отслеживать его.
var splitData = data.split('|');
var ftp = splitData[0];
var sizeLoad = splitData[1];
var namefile = splitData[2];
str.html("Ссылка на FTP получена. Копируем на сервер.");
var timer = setInterval(function() {
InfoFileSize(namefile, sizeLoad, id, str, false);
}, 2000);
$.ajax({
type: 'POST',
cache: false,
data: "url=" + ftp,
url: "?mod=edit2&p=copy_to_server",
success: function(data) {
var DataUrl = data;
$.ajax({
type: 'POST',
async: false,
cache: false,
data: "url=" + DataUrl,
url: "?mod=edit2&p=copy",
success: function(data) {
str.html('Копирование ...');
setTimeout(ajaxwithi(id, data, str, DataUrl), 5000);
},
error: function(request, status, error) {
str.html('error3:' + status + ',' + error);
},
dataType: 'json'
});
},
error: function(request, status, error) {
clearInterval('timer');
var timer = setInterval(function() {
InfoFileSize(namefile, sizeLoad, id, str, 'err');
}, 2000);
},
dataType: 'json'
});