Я создал загрузчик для своего приложения, но что-то борюсь.Ajax/iFrame/FileSystemObject Загрузить
Каждые 3 секунды мой сценарий AJAX вызывает вызов моей страницы ASP, checkProgress.asp, чтобы проверить, сколько файлов находится в этой папке во время загрузки, а также проверяет, есть ли там файл txt с именем complete.txt.
Когда счетчик выполнен, он отправляет ответ на сценарий AJAX с чем-то вроде «File 2 uploaded ...», а через 3 секунды он отправит «File 3 uploaded ...» и так далее. Если файл complete.txt был найден, он будет возвращать «Завершить» вместо подсчета. Это работало нормально, один раз, а затем, похоже, не работало должным образом после этого. Я получаю «полное» сообщение, как и следовало бы, но не получаю ответ на запрос количества файлов.
Я запустил страницу checkProgress вручную с новым окном браузера, чтобы узнать, почему моя панель прогресса не обновлялась с прогрессом, и заметила, что значок загрузки браузера просто вращается, и когда загрузка завершена, выдается «Complete» , Таким образом, вызов AJAX не дошел до страницы, чтобы собрать количество файлов, потому что он был занят, что меня смущает, потому что все, что делает эта страница, - это подсчет количества файлов в папке.
Может кто-нибудь предположить, что я делаю неправильно? Это просто не произойдет, пока эта папка добавляется?
Вот мой сценарий AJAX. Это начинается, когда начинается загрузка:
var upload1ProgressCheckInt = setInterval(function() {
var postData = "token="+token;
$.ajaxSetup ({ cache: false });
$.ajax({ type : 'GET', url : 'ajax/checkProgress.asp',
dataType : 'html', data : postData,
success : function(data) {
if (data == "Failed") {
$('#upload1ProgressStatus').html('Error: Upload cancelled!');
clearInterval(upload1ProgressCheckInt);
// do stuff
} else if (data == "Complete") {
$('#upload1ProgressStatus').html('Success: Files uploaded');
clearInterval(upload1ProgressCheckInt);
// do stuff
} else {
$('#upload1ProgressStatus').html(data);
}
}
}); // end ajax
}, 3000);
и это страница checkProgress.asp:
Set FSO = Server.CreateObject("Scripting.FileSystemObject")
If (FSO.FileExists(Server.MapPath("../files/photos/"&token_&"/complete.txt"))) = True Then
Response.Write "Complete"
Else
Set folder = FSO.GetFolder(Server.MapPath("../files/photos/"&token_&"/"))
Set files = folder.Files
fileCounter = files.Count
Response.Write "File "&fileCounter&" uploaded..."
End If
Это звучит как проблема с резьбой. Вы сохраняете что-либо в объекте Session? Если да, попробуйте избавиться от этого кода и посмотрите, заблокирован ли рабочий поток. –
@Ilia G - да, у меня есть информация для входа, хранящаяся в переменных сеанса. Я только что заметил, весь мой сайт не будет работать до тех пор, пока загрузка не завершится – TheCarver
Собственно, не весь мой сайт, только часть, с которой я вошел в систему по сессиям – TheCarver