为了账号安全,请及时绑定邮箱和手机立即绑定

使用Ajax请求下载文件

使用Ajax请求下载文件

蓝山帝景 2019-06-17 14:36:52
使用Ajax请求下载文件当我点击一个按钮时,我想发送一个“Ajax下载请求”,所以我尝试这样做:JavaScript:var xhr = new XMLHttpRequest();xhr.open("GET", "download.php");xhr.send();php:<?header("Cache-Control: public");header("Content-Description: File Transfer");header("Content-Disposition: attachment;  filename= file.txt");header("Content-Transfer-Encoding: binary");    readfile("file.txt");?>但不能像预期的那样工作,我该怎么办?提前谢谢
查看完整描述

3 回答

?
千巷猫影

TA贡献1829条经验 获得超7个赞

来到HTML 5的场景是下载属性..它是支撑在Firefox和Chrome中,很快就会出现IE11。根据您的需要,您可以使用它来代替Ajax请求(或者使用window.location)只要您要下载的文件与您的站点位于同一来源。

您可以始终发出Ajax请求/window.location通过使用一些JavaScript测试download支持,如果不支持,则将其切换为window.location.

原始答案

您不能让Ajax请求打开下载提示符,因为物理上您必须导航到文件以提示下载。相反,您可以使用一个成功函数导航到Dowload.php。这将打开下载提示,但不会更改当前页面。

$.ajax({
    url: 'download.php',
    type: 'POST',
    success: function() {
        window.location = 'download.php';
    }});

即使这回答了问题,最好还是用window.location并完全避免Ajax请求。


查看完整回答
反对 回复 2019-06-17
?
四季花海

TA贡献1811条经验 获得超5个赞

实际上,您根本不需要Ajax。如果您只是将“Dowload.php”设置为按钮上的href,或者,如果它不是链接,则使用:

window.location = 'download.php';

浏览器应该识别二进制下载,而不是加载实际页面,而只是作为下载文件。


查看完整回答
反对 回复 2019-06-17
  • 3 回答
  • 0 关注
  • 3801 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信