2017-01-13 6 views
0

iframeに(srcという属性を使用して)PDFを表示したいときに問題があります。このPDFはブラウザからダウンロードされません。 場合によっては、ポップアップでメッセージを表示するためにajax呼び出しを使用する必要があります。 PDFを生成するサーブレットのコードは、現在iframeのsrc属性でこれを直接使用しているため動作します。サーブレットを呼び出した後、ajaxでiframeにPDFを表示する方法

<iframe src="myServlet" /> 

しかし、私は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); 
    } 
} 
); 

私はクロームで試してみて、私はエラーを持っている: jqueryの - 2.1.3.jsのts = 13012017:3 GETデータ:?アプリケーション/ PDF; base64で、ブロブを:http://localhost:8180/d21d82b6-8254-4a38-907e-129b3ac037faネット:: ERR_INVALID_URL

私はバイナリファイルとしてデータを持っていることがわかります。 %PDF-1.4 % 3 0 OBJ <>ストリーム のx {PU ^A e ( ...................... ................... start xref %% EOF

申し訳ありませんが、私はこのコードを(自宅で)持っていませんが、説明はかなり明確だと思います。 iframeとattribut srcでajaxを使用すると、PDFをダウンロードできない理由がわかりません。 アイデアはありますか?

ありがとうございました。 フレッド

答えて

0

これは私のためのトリックです。

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

また、このようにajaxをエンコードする必要があります。base64_encode($data)

この情報が役立ちますようにお願いいたします。 JavaScriptで

0

、あなたはこのようにそれを行う必要がありますAjaxの答えをエンコードする:

var enc = btoa(data) 

あなたは問題がある場合、あなたはこれを試してみてください:

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

その後

$('#myframe').attr('src','data:application/pdf;base64,'+ enc); 
関連する問題