#javascript #flask #download
#javascript #flask #Скачать
Вопрос:
Я хочу отправить статический файл с событием кнопки
из этого представления flask
@flask_class.route('/download')
def download():
return send_from_directory('/home/ede//flask_lab/app/static/clientdata/',
filename="readcolumns.xlsx", as_attachment=True)
использование вызова AJAX
$("#getdata").on('click', ()=>
$.getJSON({url: '/download'}));
но я не получаю ответа сервера
представление flask работает при вставке простой HTML-ссылки для скачивания, после чего файл загружается
<a href="{{ url_for('download') }}">download</a>
почему представление flask не выполняется функцией ajax?
Ответ №1:
Вы пытаетесь получить файл Excel (* .xlsx) с помощью файла $.getJSON()
, это приведет к ошибке синтаксического анализа. Используйте приведенный ниже пример кода для регистрации ошибки в консоли.
$.getJSON('/download')
.then(function(res) {
console.log(res);
}).catch(function(error) {
console.log(error);
})
Комментарии:
1. Я получаю statusText: «OK», тип файла не решает проблему
2. проверьте
responseText
атрибут, это должно быть какое-то нечитаемое значение для .xlsx. Теперь попробуйте то же самое с a . файл в формате json, и вы получите правильно читаемый ответ.3. текст ответа читается с помощью файла json, но файл не загружается, также нет ответа сервера
4. Вы хотите увидеть диалоговое окно загрузки? попробуйте этот код:
$('#getdata').on('click', function() { window.location = '/download'; });