2012-04-17 17 views
0

Ajax呼び出しで正常に動作するページが正常に呼び出されました。ボタンをクリックすると、PDFがダウンロードされます。ただし、同じリクエストタイプとURLを使用してAJAX呼び出しを行うと、dataが返されますが、ダウンロードは促されません。AJAX呼び出しでデータが返されますが、ダウンロードのプロンプトは表示されません。

マイコール:

$("#download-pdf").live('click', function(){ 
     $.ajax({ 
     url: $(this).parents('form').attr('action'), 
     type: 'POST', 
     success: function(data){ 
      console.log(data); 
     } 
     }); 
     return false; 
    }); 

データが未解析のPDFがどうなるかのように返されます。だから私は情報がそこにあることを知っている。それはただダウンロードを引き起こさない。どんなトリックですか?

+0

を、なぜあなたはそれを提出しないのですか? – sp00m

+1

さらに、postを使った '$ .ajax'は' $ .post'(cf. [here](http://api.jquery.com/jQuery)参照)で置き換えることができます。 .post /)) – sp00m

+0

これは、問題に対する完全に間違ったアプローチだからです。実際にデータを投稿していないときに、なぜPOST要求を使用していますか? '.live()'は推奨されていません - jQueryのバージョンに応じて、 '.on()'(jQuery 1.7+)や '.delegate()'(1.7より前)の使用を検討してください。 –

答えて

3

ダウンロードを強制する唯一の方法は、「標準」フォームの送信方法を使用してページを更新することです。 Ajaxを使用すると生の出力データ(PDF)を受け取ることができ、保存ダイアログは一切表示されません

3

AJAXを使用するとダウンロードを強制することはできません。

このお読みください:あなただけのフォームを提出するなら、あなたは適切なヘッダ送信することで、ファイルをダウンロードするには、ブラウザを伝えることができForce download a pdf link using javascript/ajax/jquery

を:あなたはフォームを使用している場合

Response.Clear(); 
Response.AddHeader("content-disposition", "attachment;filename=file.pdf"); 

Response.ContentType = "application/pdf"; 
Response.WriteFile(Server.MapPath(@"~/file.pdf")); 

Response.End(); 
関連する問題