Как открыть файл с помощью JavaScript?

Чтобы ответить на ваш вопрос, вы можете просто сделать:

bill = 1
bill += getPackage()  # call function and add return value to total bill
printBill(bill)
7
задан Rob W 28 December 2011 в 20:53
поделиться

4 ответа

Примечание. Я предполагаю, что вы используете платформу Prototype из Ajax.Request call.

Объект ответа не предназначен для прямой записи, однако он имеет свойство responseText , которое должно содержать возвращенный PDF.

Вы пытались :

new Ajax.Request('/pdfservlet', {            
        onSuccess: function(response) {
            docWindow = window.open('','title');
            docWindow.document.open('application/pdf');
            document.write(response.responseText);
            docWindow.document.close();
        },
        onFailure: function(response) {
            alert(response);
        }
    });

(Обратите внимание на добавленный .responseText )

Редактировать: Хорошо, это не сработало ... Попробуйте что-то вроде этого:

new Ajax.Request('/pdfservlet', {            
        onSuccess: function(response) {
            window.open('/pdfservlet');
        },
        onFailure: function(response) {
            alert(response);
        }
    });

Что это будет делать, это создавать запрос ajax, и в случае успеха откройте его в новом окне. Открытие нового окна должно быть быстрым и фактически не требовать повторного запроса PDF, поскольку браузер должен был кэшировать его во время вызова Ajax.Request.

10
ответ дан 6 December 2019 в 21:19
поделиться

Вы можете попробовать подход с двумя проходами. Вы используете Ajax для вызова сервлета (и если он генерирует PDF на лету, пусть он его кеширует). Если это удастся, перенаправьте пользователя на сервлет с параметром для загрузки кэшированного PDF.

Существуют и другие варианты, но это зависит от того, как вы используете PDF.

My $ 0.02 ..

2
ответ дан 6 December 2019 в 21:19
поделиться

Поскольку кажется, что вы отправляете свои PDF-файлы как «встроенные», а не как «вложения», вы можете поместить URL-адрес PDF-файла в динамически созданный Iframe, а затем прикрепить этот Iframe к оверлею. Это будет работать.

-JP

0
ответ дан 6 December 2019 в 21:19
поделиться

Но если в сервлете происходит ошибка, браузер открывает пустой pdf с сообщением об ошибке.

Кажется для меня было бы лучше попытаться исправить это на стороне сервера, чем вся эта хрупкая работа с AJAX и кешами. Почему ошибка сервлета все еще устанавливает заголовок «Content-Type: application / pdf» с его сообщением об ошибке? Проверьте порядок отправки вещей в сервлете; не отправляйте Content-Type до тех пор, пока вы не создадите PDF успешно и не готовы вернуть его.

0
ответ дан 6 December 2019 в 21:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: