事因:

  我所维护的项目为旧项目,接手项目后并没有什么开发文档留下,导致很多时候一出现问题就需要自己去研究整个过程。

项目中一直使用一个"$.download()"的方法进行文件下载。后续出现很奇怪的情况,我将原本项目的js都引用到新的项目中去,

可是在我的环境中无法成功执行,在另一位同事的环境下却可以正常执行。(若看到此文章的大神能提供一些比较好的解决

方式给我亦可以留言,十分感谢!)

小白之一些维护开发想法:

  倘若原本的方法,作为一个开发者的你,并不了解究竟有多少处使用。很多开发者都会自己重写这个方法支持原本调用。

考虑到现在的项目仅几处使用。均改使用form提交,实现下载功能。

以下转载 :https://www.cnblogs.com/hamsterPP/p/6763458.html

实现过程:

已知一个下载文件的后端接口,前端如何请求该接口,实现点击按钮、下载文件到本地。

【体验非常不好】方法一:window.open("下载文件的后端接口");

*html结构*

<button type="button" id="btn1">下载一个zip(方法1)</button>
<button type="button" id="btn2">下载一个zip(方法2)</button>

/*js部分*/

var $eleBtn1 = $("#btn1");
var $eleBtn2 = $("#btn2"); //已知一个下载文件的后端接口:https://codeload.github.com/douban/douban-client/legacy.zip/master
//方法一:window.open()
$eleBtn1.click(function(){
window.open("https://codeload.github.com/douban/douban-client/legacy.zip/master");
});

然而有个问题:浏览器会打开一个新窗口,然后迅速自动关闭,体验非常不好。

方法二:通过form提交

由于ajax函数的返回类型只有xml、text、json、html等类型,没有“流”类型,所以通过ajax去请求该接口是无法下载文件的,所以我们创建一个新的form元素来请求接口。

/*js部分*/

//方法二:通过form
$eleBtn2.click(function(){
var $eleForm = $("<form method='get'></form>"); $eleForm.attr("action","https://codeload.github.com/douban/douban-client/legacy.zip/master"); $(document.body).append($eleForm); //提交表单,实现下载
$eleForm.submit();
});

最新文章

  1. NodeJs之Path
  2. WPF入门教程系列二十三——DataGrid示例(三)
  3. 深入浅出话VC++(2)——MFC的本质
  4. [转载]Soap安全测试入门
  5. I.MX6 bootargs 内核参数设定
  6. (二)OJ的主要文件
  7. [C语言 - 12] Union联合
  8. Linux shell编程02 shell程序的执行 及文件权限
  9. zoj 3471Most Powerful
  10. C#和NewSQL更配 —— CockroachDB入门(可能是C#下的全网首发)
  11. POI操作Excel的API注意点总结
  12. 基本 SQL 之增删改查(一)
  13. RBAC 几种常见的控制权限模型
  14. MySQL学习笔记2(多表操作)
  15. Ubuntu/Debian nginx 简介
  16. [C#][EF] 添加表添加不进来
  17. redis 配置文件示例
  18. c :函数指针具体解释
  19. wikioi1036 商务旅行 挺水的lca
  20. mdk3攻击实例

热门文章

  1. 详解优动漫PAINT中的图层模式
  2. Django 了解
  3. How many integers can you find HDU - 1796_容斥计数
  4. 网络教程(12) TCP协议
  5. 训练1-H
  6. BZOJ 1194 [HNOI2006]潘多拉的盒子 (图论+拓扑排序+tarjan)
  7. Ubuntu18.04 安装 oh-my-zsh
  8. python第七周:反射、异常
  9. Tensorboard服务激活
  10. 洛谷 1262 间谍网络 Tarjan 图论