Примечание. Я предполагаю, что вы используете платформу Prototype из Ajax.Request
вызова.
Объект ответа не предназначен для прямой записи, однако имеет свойство 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.