XMLHttpRequest在浏览器中打开PDF

use*_*311 3 html php pdf ajax xmlhttprequest

我想做XMLHttpRequest然后通过POST方法发送文件名在浏览器中打开PDF.

   xmlhttp.open("POST","pdf.php",true); //CHANGE
   xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
   xmlhttp.send("file="+input);
Run Code Online (Sandbox Code Playgroud)

这是可能的还是XMLHttpRequest只适用于HTML?

DVK*_*DVK 5

  1. 如果您要查询的URL实际返回PDF数据,则无法通过XMLHttpRequest执行此操作.

    为什么?因为响应是包含原始PDF数据的HTTP响应.没有JavaScript能够用当前文档的DOM内容替换该数据中包含的PDF,即使您可以通过responseText属性访问数据 (另请参阅http://www.w3.org/TR)/XMLHttpRequest/#the-responsetext-attribute).

  2. 您可以做的是将PDF文件生成到可通过Web服务器的URL访问的临时文件中,然后让脚本发回用于访问该文件的URL.

    当您的响应处理程序处理URL时,它可以:

    • 通过更改重新加载当前页面 window.location.href = new_pdf_url

    • <iframe>通过更改iframe的src属性将其加载到当前文档的内部

    • 在另一个窗口打开它 window.open(new_pdf_url, XXX)

      请注意,您仍然需要一个临时文件位置的URL来打开一个新窗口