Плагин jQuery fileDownload не показывает всплывающее окно, как это исправить? - PullRequest
0 голосов
/ 02 мая 2019

Я использую 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));

И вывод получаюпосле этого равно .Есть идеи, что я делаю не так?

1 Ответ

0 голосов
/ 02 мая 2019

Хорошо, не важно, я просто забыл включить файлы пользовательского интерфейса jQuery, что является единственной причиной моих проблем, тема может быть закрыта.

...