Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Диалог "Save as" для данных в переменной. (https://javascript.ru/forum/jquery/61040-dialog-save-dlya-dannykh-v-peremennojj.html)

CrHD 02.02.2016 07:25

Диалог "Save as" для данных в переменной.
 
Добрый день!
На бэкэнде (Django) формируем файл (excel) и записываем его в HttpResponse
Код:

response = HttpResponse(content_type="application/xls")
response['Content-Disposition'] = 'attachment; filename="%s"' % filename
response.write(save_virtual_workbook(book))

Итого в response имеем непосредственно данные файла. По сути бери и соохраняй. Если запросить, например,
window.open('/url/to/view?' + $.param(data.form_data));
то браузер сразу предлагает сохранить файл.
Дело в том, что в ответе может не быть файла, и нужно вывести сообщение об ошибке. Поэтому я использую $.ajax
$.ajax({
                url: '/url/to/view',
                type: 'GET',
                data: data.form_data,
                dataType: 'application/xls',

                success: function(response) {
                    if (response.error){alert(response.error); 
                }
            });

В функции success, переменной response есть наш файл, и я никак не могу догнать как мне его сохранить...
Такой ход
window.open('data:application/xls,' + response)
отдает некорректный файл (размером на 8Кб больше)
Собственно как мне сохранить содержимое response в неизменном виде, в котором оно приходит с бэкэнда?
Заранее благодарю.


Часовой пояс GMT +3, время: 20:00.