Узнайте, когда загрузка прекращается через ASP.NET или скрипт на стороне клиента

#jquery #asp.net #download

#jquery #asp.net #Скачать

Вопрос:

Мне было интересно, не подскажет ли кто-нибудь, как исправить эту маленькую визуальную ошибку?

В моем asp.net в коде я генерирую файл, который пользователь может загрузить. Псевдокод выглядит следующим образом:

 Response.ContentType = "text/plain";
Response.AppendHeader("Content-Disposition", "attachment; filename="   FileName);
Response.BinaryWrite();
Response.End();
  

Я также использую jQuery для отображения анимации вращающегося круга на стороне клиента, пока такой файл генерируется на сервере:

 $(function () {
    $('#ButtonBeginDownload').click(function () {
        //When Submit button is clicked
        $('#IdSubmitSpinner').css('display', 'inline-block');
    });
}
  

И CSS для счетчика примерно так:

 .submitSpinner
{
    margin: 0px 10px 0px 6px;
    display: none;
    width: 28px;
    height: 28px;
    display: none;
}
  

и HTML:

 <img id="IdSubmitSpinner" alt="" src="Graphics/spinner.gif" width="28" height="28" class="submitSpinner" />
  

Приведенный выше код работает нормально, и счетчик начинает вращаться при начале загрузки, но, к сожалению, я не могу найти способ заставить счетчик перестать вращаться, когда загрузка файла завершится. Кто-нибудь знает, как это исправить?

Комментарии:

1. Как вы запускаете фактическую загрузку?

2. Давным-давно, но помните ли вы, находили ли вы когда-либо решение для этого? Я застрял с той же проблемой

3. @HansPetterNaumann: Я думаю, я просто позволил этому вращаться. Но приведенный ниже ответ об использовании Ajax, вероятно, является правильным. Посмотрите, сможете ли вы найти лучшее решение, и если да, опубликуйте его здесь…

Ответ №1:

Если вы используете Ajax вызовы для загрузки файла, вы можете использовать это для определения начала / остановки передачи:

 $("#IdSubmitSpinner").bind("ajaxSend", function(){ // when user request sent
           $(this).show();
     }).bind("ajaxComplete", function(){ // when response ended
           $(this).hide();
     });
  

Комментарии:

1. Спасибо, и нет, я использую обычный процесс загрузки в браузере. Как вы добавляете к нему вызовы Ajax? PS. Я не хочу излишне усложнять ситуацию только для отображения счетчика, если вы понимаете, что я имею в виду…

2.Вы можете извлекать plain/text содержимое с помощью jQuery ajax() функций семейства. например: $.ajax({ url: 'yourPageURL', type: 'GET', dataType: 'text', success: function(retrievedContent) { // do what ever you want with retrieved content. } });

3. Извините, я все еще не понимаю, что вы пытаетесь предложить. Как это поможет мне в том, чего я хочу достичь?