jQuery событие после загрузки PDF? - PullRequest
2 голосов
/ 19 февраля 2020

У меня есть модальное диалоговое окно, которое позволяет пользователям создавать собственные PDF. После того, как они нажимают кнопку «Пуск», страница перенаправляется с помощью window.location в контроллер, который затем создает PDF и возвращает его.

Из-за того, сколько времени требуется для возврата PDF, я хочу отобразить модальное диалоговое окно «Генерация PDF», которое автоматически закрывается, когда PDF-файл завершается и возвращается.

Проблема в том, что я не могу понять, как / когда выполнить эту последнюю функцию, чтобы закрыл «Генерацию» PDF " диалог. Поскольку контроллер возвращает тип application / pdf, не существует события объекта документа для присоединения, верно? Каков наилучший способ сделать это?

Ответы [ 3 ]

0 голосов
/ 19 февраля 2020

Вот как я бы это сделал

  1. Пользователь нажимает на ссылку, чтобы создать pdf

  2. AJAX запрос отправлен сервер для генерации pdf

  3. Сервер добавляет создание PDF в фоновое задание и возвращает статус как added

  4. Клиент получает статус, показывает модель или анимацию и начните пинговать сервер каждые 3 секунды для получения статуса

  5. Сервер возвращает состояние через (n) секунд как completed/failed и ссылку на pdf

  6. Клиент скрывает модель / анимацию, останавливает пинг и открывает ссылку в новой вкладке, которая загрузит pdf

0 голосов
/ 19 февраля 2020

Спасибо за ваши ответы. @PGill был на правильном пути. Я упростил его подход:

  1. Пользователь нажимает кнопку Пуск
  2. Отображается модальное диалоговое окно «Создание PDF»
  3. Отправляется запрос AJAX Контроллер 1 для генерации PDF
  4. Контроллер 1 создает PDF (который занимает 5-60 секунд), сохраняет его в безопасном месте и возвращает уникальный ключ
  5. Модальный «Генерация PDF» диалоговое окно скрыто
  6. Браузер перенаправлен на контроллер 2 и отправил уникальный ключ
  7. Контроллер 2 проверяет ключ, извлекает PDF из безопасного места и возвращает его

Решение здесь состояло в том, чтобы отделить Генерацию PDF от Загрузки PDF на 2 шага, так что между ними может быть скрыт модальный диалог.

, который проверяет его, извлекает файл PDF из безопасное местоположение и возвращает его.

ShowModalDialog();

$.ajax({
  type: "GET",
  url: 'GeneratePDFReportForDownload?' + params,
  success: function (pdfkey, textStatus, jqXHR) {
      HideModalDialog();
      window.location = 'DownloadPDFReport?key=' + pdfkey;
  },
  async: true,
  datatype: 'json'
});
0 голосов
/ 19 февраля 2020

перенаправить на контроллер, который создает ваш PDF и сохраняет его. контроллер должен вернуть после сохранения файла pdf a js, который закрывает модальное окно и перенаправляет на другой элемент управления, который только читает и отвечает на файл PDF.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...