2012-02-29 2 views
0

У меня есть приложение Django с некоторыми графиками статистики, которые я показываю пользователю. У меня есть опция экспорта для этих графиков. Когда я нажимаю кнопку экспорта, я создаю csv на сервере и возвращаю его клиенту, поэтому файл начинает загружаться немедленно. Все это работает отлично, но создание csv требует времени, и я хотел бы показать некоторые «Подождите ...» gif, пока файл не начнет загружаться. Каков наилучший способ сделать это? (я не хочу, чтобы создать временную ссылку на файл и перейти на эту ссылку после получения ответа Ajax.) My Джанго вида возвращается:wait gif on export

response = HttpResponse(open("statistics.tar.gz").read(), content_type='application/tar.gz') 
response['Content-Disposition'] = 'attachment; filename=statistics_%s.tar.gz' % str(get_customer_date(request.customer, datetime.utcnow())).split(" ")[0] 
response['Content-Length'] = os.path.getsize("statistics.tar.gz") 
response.set_cookie("export_download", value='download') 
return response 

ответ

0

Я хотел бы создать невидимый IFRAME, чтобы быть объектом ссылки. И onClick по этой ссылке, покажите gif. Скрыть это когда IFrame прекращает загрузку :)

что-то вроде этого (никогда не тестировался, но должен работать в теории):

$("a#download-link").click(function(){ 
    $("#loading-div").show(); 
    $("body).append('<iframe id="myIframeId" ...>'); 
    $('iframe#myIframeId').attr('src', url); 
    $('iframe#myIframeId').load(function() { $("#loading-div").hide(); }); 
}); 
+0

Спасибо за ответ. Можете ли вы объяснить, что именно вы имеете в виду? (Можете ли вы показать пример кода или дать ссылку, где его можно прочитать) – alexarsh

+0

Я обновил свой ответ –

+0

Большое спасибо, Alex – alexarsh