从服务器下载PHP文件不能通过ajax请求工作

时间:2017-07-19 15:29:28

标签: php ajax

我有一个从服务器下载文件的PHP脚本,当从href标签调用时工作正常,但如果从ajax请求调用相同的php脚本,它就不起作用。 (我需要使用ajax请求,因为我需要在下载de file之前从mysql db中提取文件的路径) 我真的很感激任何帮助。

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>

正如我之前所说,使用de href标签中的选项,文件下载没有任何问题,但使用ajax请求中的选项我得到以下屏幕:enter image description here

1 个答案:

答案 0 :(得分:0)

你应该生成一个url来传递你的ajax请求(比如在json中),然后你可以做一些像location.href = your_download_url;这样的事情 在您的情况下,您不会以dinamically方式生成文件,因此您可以在location.href = "/download.php";中直接调用miFuncion()而无需ajax请求。