簡體   English   中英

調用Servlet后如何在帶Ajax的iframe中顯示PDF

[英]How to display a PDF in iframe with ajax after calling a servlet

我想在iframe中顯示PDF時遇到問題(使用屬性src)。永遠不會從瀏覽器下載PDF。 在某些情況下,我需要使用ajax調用在彈出窗口中顯示消息。 生成PDF的Servlet的代碼有效,因為當前我們直接在iframe的src屬性中使用它。

 <iframe src="myServlet" />

但是,當我將servlet與ajax調用一起使用時,又想在iframe中添加PDF的內容時,它將無法正常工作。 我不知道為什么 這是js的示例:

$.ajax(
{
   url: "myServlet",
   ...
   complete: function(data) {
        var blob = new Blob([data], { type: 'application/pdf' });
        var downloadUrl = URL.createObjectURL(blob);
        $('#myframe').attr("src", downloadUrl);
   }
 }
);

我嘗試使用chrome,但出現錯誤:jquery-2.1.3.js?ts = 13012017:3 GET data:application / pdf; base64,blob: http:// localhost:8180 / d21d82b6-8254-4a38-907e- 129b3ac037fa net :: ERR_INVALID_URL

我可以看到我的數據是二進制文件:%PDF-1.4% 3 0 obj <> streamx {PU ^A e (........ .................................... startxref 38448 %% EOF

抱歉,這里(家里)沒有代碼,但我認為解釋很清楚。 我不知道為什么如果我將ijax與iframe和attribut src一起使用,為什么無法下載PDF。 你有想法嗎?

謝謝。 弗雷德

這對我有用。

$.ajax(
{
   url: "myServlet",
   ...
   complete: function(data) {
        $('#myframe').attr('src','data:application/pdf;base64,'+data);
   }
 }
);

另外,您應該以這種方式對ajax ans進行編碼base64_encode($data)

我希望你覺得這有幫助。

在Javascript中,要對ajax答案進行編碼,您應該這樣做:

var enc = btoa(data)

如果遇到問題,請嘗試以下操作:

var enc = btoa(unescape(encodeURIComponent(data)))

然后

 $('#myframe').attr('src','data:application/pdf;base64,'+ enc);

暫無
暫無

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

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