2011-01-20 88 views
3

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

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

那是可能的,或者XMLHttpRequest是只为HTML?

+0

你试图动态加载使用Javascript的PDF? – Jonah 2011-01-20 17:45:05

+0

是的!也许这将有所帮助:http://stackoverflow.com/questions/133925/javascript-post-request-like-a-form-submit – user583311 2011-01-20 17:46:18

回答

5
  1. 如果您正在查询的URL实际上会返回PDF数据,则无法通过XMLHttpRequest进行操作。

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

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

    如果您的回应处理程序处理的URL,它可以:通过改变iframe的src改变window.location.href = new_pdf_url

  3. 加载它在当前文档内的

    • 重新加载当前页面属性

    • 在单独的窗口中打开它window.open(new_pdf_url, XXX)

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

0

如果您在同一窗口中打开PDF,使用XmlHttpRequest没有意义,只需从javascript中设置window.location(window.location.assign("http://example.com/location/file.pdf"),window.location.href="http://etc),而不是调用XmlHttpRequest。 (如果你收到的XmlHttpRequest的PDF字节你打算怎么说服浏览器PdfPluginX显示它呢?)

如果你想在一个新浏览器窗口中的PDF只需使用window.open(...)直接从你的JavaScript。

+0

我不想在Dropbox中显示PDF的位置。我有一个接收POST值并显示PDF的pdf.php。我只需要等待通过javacript发送POST到pdf.php。 – user583311 2011-01-20 17:52:16

-1

你可以试试这个:

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); 
相关问题