簡體   English   中英

處理來自Ajax成功的PDF結果數據

[英]Handling PDF result data from ajax success

我想知道是否有人可以提出一種替代方法來解決以下問題。

我有一個Web應用程序,可向PDF發出http請求。 對於要在服務器端創建的請求,PDF所花費的時間可能超過默認超時,因此,為了更好地控制它,我使用了ajax,而以前只使用window.open。

但是,由於PDF的准備方式,創建它的請求也會返回它。 我想不出一種方法來處理返回的二進制PDF數據,所以我只是簡單地放在瀏覽器緩存上存儲數據。 然后,只需使用window.open再次針對相同的URL請求即可。

為此的代碼如下。

function loadPdf(url, timeout){
   $.ajax({
     url: url,
     success: function(data){
       window.open(url);
     },
     error: function(error, status){
       window.alert("Problem retrieving PDF.\nThe error status is: " + status);
     },
     timeout: timeout,
     dataType: "application/pdf"   
  });
}

我真正想做的是以要求用戶打開/保存PDF的方式處理成功數據。 我真的不喜歡以這種方式使用window.open,尤其是像這樣的重復調用。

我真正想做的是以要求用戶打開/保存PDF的方式處理成功數據。

這不可能。 您不應該使用AJAX下載文件。 您不能對success回調中檢索到的字節數組做任何有用的事情。 您不能直接將其保存在客戶端計算機上(出於明顯的原因),也不能使用“保存”對話框來提示用戶。

您不需要使用window.open 您只需提供指向該文件的鏈接:

<a href="/somescript">download pdf</a>

然后在服務器上指定: Content-Disposition: attachment; filename="test.pdf" Content-Disposition: attachment; filename="test.pdf"自定義HTTP標頭,以顯示保存對話框,允許用戶在計算機上指定存儲文件的位置。

jquery.fileDownload插件會滿足您的需求嗎?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM