Я хочу сделать XMLHttpRequest, а затем открыть PDF в браузере, отправив имя файла методом POST.
xmlhttp.open("POST","pdf.php",true); //CHANGE xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded"); xmlhttp.send("file="+input);
Это возможно или XMLHttpRequest для HTML?
Это невозможно сделать через XMLHttpRequest, если запрашиваемый URL-адрес фактически возвращает данные PDF.
Зачем? Поскольку ответ является ответом HTTP, который содержит необработанные данные PDF. Нет возможности JavaScript заменить содержимое DOM текущего документа на рендеринг PDF, содержащегося в этих данных, даже если у вас есть доступ к данным через атрибут responseText `(также см. http://www.w3.org/TR / XMLHttpRequest / # the-responseetext-attribute ).
То, что вы можете сделать, это создать файл PDF во временном файле, доступном через URL-адрес с вашего веб-сервера, а затем передать сценарий URL-адресу для доступа к этому файлу.
Когда ваш обработчик ответа обрабатывает URL-адрес, он может:
window.location.href = new_pdf_url
текущую страницу, изменив window.location.href = new_pdf_url
Загрузите его в <iframe>
внутри текущего документа, изменив атрибут src
iframe
Откройте его в отдельном окне с помощью window.open(new_pdf_url, XXX)
Обратите внимание, что для доступа к временному файлу STILL нужен URL-адрес, чтобы открыть новое окно
Если вы открываете PDF в том же окне, нет смысла использовать XmlHttpRequest, просто установите window.location ( window.location.assign("http://example.com/location/file.pdf")
, window.location.href="http://etc
) из вашего javascript вместо вызова XmlHttpRequest. (если вы получили байты PDF из XmlHttpRequest, как вы собираетесь убедить браузер отображать его с PdfPluginX?)
Если вы хотите, чтобы PDF в новом окне браузера просто использовал window.open(...)
прямо из вашего javascript.
Вы можете попробовать это:
var xmlHttp = new XMLHttpRequest(); xmlHttp.onreadystatechange = function() { if (xmlHttp.readyState == 4 && xmlHttp.status == 200) { var file = window.URL.createObjectURL(xmlHttp.response); var a = document.createElement("a"); a.href = file; window.open(file); } } xmlHttp.open("GET", '/pdf', true); // true for asynchronous xmlHttp.responseType= "blob"; xmlHttp.send(null);