Обработка результатов PDF в результате успеха AJAX - PullRequest
0 голосов
/ 15 февраля 2012

Интересно, может ли кто-нибудь предложить альтернативный подход к следующему решению?

У меня есть веб-приложение, которое отправляет http-запрос на PDF.PDF может занять больше времени ожидания по умолчанию для запроса на создание на стороне сервера, поэтому для лучшего контроля я использовал ajax, где, как и ранее, использовался только window.open.

Однако из-закак подготовлен PDF, запрос на его создание, также возвращает его.Я не мог найти способ обработки двоичных данных PDF, возвращенных, поэтому я просто использовал кеш браузера для хранения данных.Затем просто запросите снова тот же URL, но с использованием window.open.

Код для этого следующий:

function loadPdf(url, timeout){
   $.ajax({
     url: url,
     success: function(data){
       window.open(url);
     },
     error: function(error, status){
       window.alert("Problem retrieving PDF.\nThe error status is: " + status);
     },
     timeout: timeout,
     dataType: "application/pdf"   
  });
}

На самом деле я хотел бы обработать успехданные таким образом, что просит пользователя открыть / сохранить PDF.Мне не очень нравится использовать window.open таким образом, особенно при повторном вызове, подобном этому.

Ответы [ 2 ]

2 голосов
/ 15 февраля 2012

На самом деле я хотел бы обработать данные об успехе так, чтобы пользователь мог открыть / сохранить PDF

Это невозможно.Вы не должны использовать AJAX для загрузки файлов.Вы не можете сделать ничего полезного с байтовым массивом, который вы получили в обратном вызове success.Вы не можете напрямую сохранить его на клиентском компьютере (по понятным причинам) и не можете предложить пользователю диалоговое окно «Сохранить».

Вам также не нужно использовать window.open.Вы можете просто предоставить ссылку на файл:

<a href="/somescript">download pdf</a>

, а затем на сервере указать настраиваемый заголовок HTTP: Content-Disposition: attachment; filename="test.pdf", чтобы отобразить диалоговое окно сохранения, позволяющее пользователю указать место на своем компьютере для хранения.файл.

0 голосов
/ 27 июня 2013

Плагин jquery.fileDownload будет делать то, что вам нужно?

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