Чтобы ответить на ваш вопрос, вы можете просто сделать:
bill = 1
bill += getPackage() # call function and add return value to total bill
printBill(bill)
Примечание. Я предполагаю, что вы используете платформу 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.
Вы можете попробовать подход с двумя проходами. Вы используете Ajax для вызова сервлета (и если он генерирует PDF на лету, пусть он его кеширует). Если это удастся, перенаправьте пользователя на сервлет с параметром для загрузки кэшированного PDF.
Существуют и другие варианты, но это зависит от того, как вы используете PDF.
My $ 0.02 ..
Поскольку кажется, что вы отправляете свои PDF-файлы как «встроенные», а не как «вложения», вы можете поместить URL-адрес PDF-файла в динамически созданный Iframe, а затем прикрепить этот Iframe к оверлею. Это будет работать.
-JP
Но если в сервлете происходит ошибка, браузер открывает пустой pdf с сообщением об ошибке.
Кажется для меня было бы лучше попытаться исправить это на стороне сервера, чем вся эта хрупкая работа с AJAX и кешами. Почему ошибка сервлета все еще устанавливает заголовок «Content-Type: application / pdf» с его сообщением об ошибке? Проверьте порядок отправки вещей в сервлете; не отправляйте Content-Type до тех пор, пока вы не создадите PDF успешно и не готовы вернуть его.