2011-01-20 120 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); 
相關問題