2017-07-19 42 views
0

我有一個php腳本從服務器下載文件,並從href標記調用時工作正常,但它不工作,如果相同的PHP腳本是從ajax請求中調用。 (我需要使用ajax請求,因爲我需要在下載de文件之前從mysql數據庫中提取文件的路徑) 我真的很感激任何幫助。從服務器下載PHP文件並不通過阿賈克斯請求

PHP (mydownload.php) 
<?php 
header("Content-disposition: attachment; filename=myfile.pdf"); 
header("Content-type: application/pdf"); 
readfile("myfile.pdf"); 
?> 

HTML (index.html) 
<head> 
<script type="text/javascript" src="js/jquery/jquery-3.1.1.min.js"></script> 

<script type="text/javascript"> 
function miFuncion() 
{ 
    $.ajax({ 
    url: "mydownload.php", 
    type: "post", 
    success: function(res){ 
    } 
    }) 
} 
</script> 

</head> 
<body> 

    <a href="mydownload.php">Download the document (PDF)</a> // Work ! 

    <form> 
    <input type="button" onclick="miFuncion()" value="Activar Función DL"> // Doesn`t work 
    </form> 

</body> 
</html> 

正如我之前所說的,利用德href標記選項,文件下載沒有任何問題,但使用來自Ajax請求我得到下面的屏幕,而不是選項:enter image description here

+0

如果您使用Ajax下載文件,那麼您要告訴瀏覽器,您將在javascript中使用'success:function(res){ } .... ....爲什麼不簡單地使用鏈接,它告訴瀏覽器它應該處理響應 –

+0

嗨馬克,感謝您的回答,問題是用戶可以選擇要下載的文件。所以我需要將該文件的名稱傳遞給腳本。我不知道如何在沒有Ajax的情況下將參數傳遞給php腳本。 –

回答

0

你應該產生一個網址通過你的ajax請求(如json),然後你可以做一些像location.href = your_download_url; 在你的情況下,你不生成文件dinamically,所以你可以直接撥打location.href = "/download.php";miFuncion()沒有ajax請求。