У меня есть форма загрузки файла.После отправки форма отправляет данные в iframe, а затем использует jQuery и PECL UploadProgress для получения прогресса загрузки файла.Когда сценарий запрашивает ход загрузки, а ответ равен нулю, файл завершил загрузку, сценарий затем считывает iframe для получения информации о файле.
Сценарий выполняется с интервалом, который очищается, когда ответnull.
Моя проблема со сценарием состоит в том, что, если файл загружается до выполнения запроса к файлам, произойдет ошибка, поскольку браузер попытается получить значение свойства, которое не имеетбыл установлен (ответ будет пустым).
Как проверить, завершил ли файл загрузку, прежде чем скрипт попытается получить значение свойства, которое не было установлено?
Есть ли какой-нибудь способ добавить прослушиватель в iframe, чтобы, когда он заканчивал загрузку, я мог немедленно отменить интервал и отобразить результат?
Я подумал проверить содержимое iframe перед запросом.и если есть данные, отмените запрос и отобразите данные, но это не похоже на работу.
Erили я вхожу в IE:
Line: 37
Error: Unable to get value of the property 'filename': object is null or undefined
Заранее извиняюсь, если это кажется немного глупым, я еще не спал, работая над этим проектом, и я не могу найти способ исправить это.
function beginUpload()
{
// Hide the upload form
$("#uploadContainer").hide(function(){
$(".fileProgress").show();
});
var interval = setInterval(function(){
$.getJSON("upload.php?uploadProgressKey=" + uploadProgressKey, function(returnData){
if($("#uploadFrame").contents().find("html body").html() !== "")
{
clearInterval(interval);
$("#content").html($("#uploadFrame").contents().find("html body").html());
}
if(returnData == null)
{
// Upload complete as there is not data to report about upload
// Stop the interval of checking the data
clearInterval(interval);
// Load result to content div
$("#content").html($("#uploadFrame").contents().find("html body").html());
}
setUploadInformation(returnData.filename, returnData.bytes_uploaded, returnData.bytes_total, returnData.speed_average);
setUploadBar(returnData.bytes_uploaded, returnData.bytes_total);
});
}, 800);
}