Я использую jQuery для своей внешней части приложения (бэкэнд запускается на Flask), и мне нужен был плагин для отображения некоторой информации пользователю, пока он ждет, пока файл будет ему предоставлен (и мне также нужнодля работы со старыми версиями IE, поэтому я решил использовать этот плагин ).
К сожалению, я не смог ничего с этим сделать из-за некоторых странных ошибок JS, которые я получаю (скриншоты и мой пример кода ниже).
Пример кода на стороне сервера:
from flask import Flask, send_file, render_template
import os
from time import sleep
app = Flask(__name__)
@app.route('/', methods=['GET'])
def mainRoute():
return render_template('index.html')
@app.route('/filesfordl/file.txt', methods=['GET'])
def fileRoute():
sleep(5) # time for window to appear
fileResponse = send_file(os.path.join(os.getcwd(), 'filesfordl/file.txt'), as_attachment=True, attachment_filename='file.txt')
fileResponse.set_cookie('fileDownload', 'true')
return fileResponse
if __name__ == '__main__':
app.run('0.0.0.0', '5000')
Мой index.html:
<html>
<head>
<script type="text/javascript" src="{{ url_for('static', filename='js/jquery-3.3.1.min.js') }}"></script>
<script type="text/javascript" src="{{ url_for('static', filename='js/jquery.fileDownload.js') }}"></script>
<script type="text/javascript" src="{{ url_for('static', filename='js/script.js') }}"></script>
</head>
<body>
<a href="/filesfordl/file.txt" class="fileDownloadSimpleRichExperience">Get file!</a>
</body>
</html>
И, наконец, часть JS:
/*$.fileDownload('/filesfordl/file.txt', {
successCallback: function (url) {
alert('You just got a file download dialog or ribbon for this URL :' + url);
},
failCallback: function (html, url) {
alert('Your file download just failed for this URL:' + url + '\r\n' +
'Here was the resulting error HTML: \r\n' + html
);
}
});
*/
$(function() {
$(document).on("click", "a.fileDownloadSimpleRichExperience", function() {
$.fileDownload($(this).attr('href'), {
preparingMessageHtml: "We are preparing your report, please wait...",
failMessageHtml: "There was a problem generating your report, please try again."
});
return false; //this is critical to stop the click event which will trigger a normal file download!
});
});
^^ в этой части, если я раскомментирую верхний код, он всегдазапускает failCallback после ввода index.html, даже если я не нажимаю на ссылку.
После нажатия на гиперссылку я получаю это сообщение об ошибке (пока не могу публиковать изображения напрямую): this Что в конечном итоге приводит к этой строке в коде плагина. this
EDIT:
Я добавил несколько отладочных отпечатков поверх проблемной строки:
console.log($("<div>").html(settings.preparingMessageHtml).dialog);
console.log($("<div>").html(settings.preparingMessageHtml));
И вывод получаюпосле этого равно .Есть идеи, что я делаю не так?