Intereting Posts
Php создать файл, если он не существует Неопределенное свойство: PDO :: $ connect_error Волшебные функции __call () для функций? PHP Script в моих файлах WordPress. Пожалуйста, расшифруйте или помогите мне Удалить Множественная загрузка фотографий PHP Ошибка session_start (): open (/ var / lib / php / session error Symfony2 / FOSUserBundle – перенаправление после входа в систему согласно роли Получать значения из нескольких полей выбора с одинаковым именем? Включая его значение с jquery и php Массивы POST, не отображающие отмеченные флажки PHP: Я смешиваю программирование, управляемое событиями, с сигнальными интерфейсами (сигналом и слотом / шаблоном наблюдателя)? php, mysql поиск по сайту Лучший способ повторить имя пользователя на каждой странице с помощью сеансов? PHP-код mkdir ('images', '0777') создает папку с разрешениями 411! Зачем? Laravel: как заполнить лезвие SELECT со значениями из оператора where Как получить только изображения с помощью scandir в PHP?

XMLHttpRequest для открытия PDF в браузере

Я хочу сделать 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?

  1. Это невозможно сделать через XMLHttpRequest, если запрашиваемый URL-адрес фактически возвращает данные PDF.

    Зачем? Поскольку ответ является ответом HTTP, который содержит необработанные данные PDF. Нет возможности JavaScript заменить содержимое DOM текущего документа на рендеринг PDF, содержащегося в этих данных, даже если у вас есть доступ к данным через атрибут responseText `(также см. http://www.w3.org/TR / XMLHttpRequest / # the-responseetext-attribute ).

  2. То, что вы можете сделать, это создать файл 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);