2012-04-17 24 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

,你爲什麼不提交它? '$('myform')。submit();' – sp00m 2012-04-17 12:56:38

+1

此外,'$ .ajax'使用post可以替換爲'$ .post'(參見[這裏](http://api.jquery.com/jQuery .post /)) – sp00m 2012-04-17 12:58:45

+0

由於這完全是對問題的錯誤解決方法,因此這是一種爭議點,但是:爲什麼在您沒有實際發佈任何數據時使用POST請求?另外,'.live()'不推薦使用 - 你應該考慮使用'.on()'(jQuery 1.7+)或'.delegate()'(1.7之前),這取決於你的jQuery版本。 – 2012-04-17 12:59:47

回答

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(); 
相關問題