Ajax不能下载文件问题
情景: 一直在后端写下载文件的逻辑,并没有注意前端调用的问题,在做导出excel功能的时候,就碰到了这个问题,还傻呼呼的同事在争论,最后实力打自己的脸。。。
在JQuery中的ajax支持的类型有:
- “xml”: 返回 XML 文档,可用 jQuery 处理
- “html”: 返回纯文本 HTML 信息;包含的 script 标签会在插入 dom 时执行
- “script”: 返回纯文本 JavaScript 代码。不会自动缓存结果。除非设置了 “cache” 参数
- “json”: 返回 JSON 数据
- “jsonp”: JSONP 格式。使用 JSONP 形式调用函数时,如 “myurl?callback=?” jQuery 将自动替换 ? 为正确的函数名,以执行回调函数
- “text”: 返回纯文本字符串
原因
ajax是不能直接操作计算机磁盘的(出于安全性的考虑),尽管可以将数据保存在内存中,这也是javascript的限制规范
解决方案
比如下载文件的地址是url=/download.html
,那么我们在js中可以这样调用
url = /download.html
window.location.href = url