使用ajax请求下载文件

我想在单击按钮时发送一个“ajax下载请求”,因此我尝试了以下方法:

javascript:

var xhr=new XMLHttpRequest();
open(“GET”,“download.php”);
xhr.send();

下载.php:

<?
标头(“缓存控制:公共”);
标题(“内容描述:文件传输”);
标题(“内容配置:附件;文件名=file.txt”);
标题(“内容传输编码:二进制”);
readfile(“file.txt”);
?>

但是没有按预期工作,我怎么办?先谢谢你

2015年4月27日更新

进入HTML5场景的是下载属性。Firefox和Chrome都支持它,IE11也很快支持它。根据您的需要,您可以使用它来代替AJAX请求(或使用window.location),只要您要下载的文件与您的站点位于同一来源

通过使用一些JavaScript测试是否支持下载,如果不支持,则将其切换为调用window.location,您始终可以使AJAX请求/window.location成为一个后备方案

原始答案

您不能让AJAX请求打开下载提示符,因为您必须导航到该文件以提示下载。相反,您可以使用success函数导航到download.php。这将打开下载提示,但不会更改当前页面

$.ajax({
url:'download.php',
键入:“POST”,
成功:函数(){
window.location='download.php';
}
});

尽管这回答了问题,但最好只使用window.location并完全避免AJAX请求

发表评论