从AJAX调用时,下载文件功能不起作用?

This might be a bad question, because it's possible the issue is to something else in my project, but I was hoping that changing the header from an AJAX call may be an issue someone is familiar with. The below PHP function executes fine when called synchronously, but does not download anything and returns a 200 error when I call it from AJAX.

  public function download_csv() {

    $csv = 'hello, header';
    header('Content-Disposition: attachment; filename="format.csv"');
    header('Content-Type: text/plain');
    header('Content-Length: ' . strlen($csv));
    header('Connection: close');


    echo $csv;
  }
dongzhi6087
dongzhi6087 我不明白这个评论。有没有办法使用XHR对象下载到磁盘?
5 年多之前 回复
douchuitang0331
douchuitang0331 该文件被下载并可供XHR对象使用。它不会保存到磁盘,因为您正在使用XHR处理它。
5 年多之前 回复
dougu5847
dougu5847 好的,对不起。然后返回没有错误。(但没有下载任何内容)。我将研究CrisDeBlonde的建议。
5 年多之前 回复
dongnaoxia0927
dongnaoxia0927 HTTP状态代码200正常,表示请求成功,服务器能够提供请求。
5 年多之前 回复
dook0034
dook0034 但是如果你通过Ajax请求调用它,你的Ajax如何处理响应?
5 年多之前 回复
dounue1965
dounue1965 200错误?响应代码200不是错误,它是可以的
5 年多之前 回复

1个回答

In my knowledge you cannot download a file using ajax (security reasons).
I googled a bit again, and it seems that this is the point.

A working solution could be using an iframe that is not visible to the user, and setting its 'src' attribute to the download url when you need to download the file.

You can also check this answer here that uses a jquery plugin and looks promising (haven't tried it myself)

duanfuchi7236
duanfuchi7236 我不确定我理解你的评论。 您提供了一些PHP代码,导致提供csv文件。 如果将iframe的src设置为执行此代码的位置,则会下载csv - 而不会离开当前正在查看的用户页面。 那不是这样吗?
5 年多之前 回复
douou1891
douou1891 所以,假设我在我的html中放了一个隐藏的iframe。 接下来是什么? 我不是从URL下载文件,只是将字符串转换为csv以进行下载。 我可以进行AJAX调用来检索字符串,并在javascript中设置src attr。 但是我可以在没有网址的情况下设置它吗?
5 年多之前 回复
donglian6625
donglian6625 我昨天第一次遇到$ .fileDownload,看起来很有希望,但我还没有正确测试它
5 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问