实现Ajax或Submit Form提交的将数据导出下载成csv文件,以及H5的button标签小坑

32 篇文章 0 订阅
11 篇文章 0 订阅

说明:

本文介绍的下载文件,不需要服务端存在导出下载的文件, 如果针对服务端将生成文件存储下来的情况,则前端可以简单创建隐藏的链接并实现点击下载即可,可以参照本文或笔者以往写的 《JS实现下载文件并重命名》 

一、小知识:

1. chrome://downloads 或  edge://downloads 可查看浏览器文件下载历史

2. HTML中注意“button”标签有个坑:

不同于过去的<input type="button">, HTML5的<button>标签有个Type属性,值为:button|reset|submit,如果不提定该属性,在不同的浏览器中会表现为不同的type默认值,比如笔者项目中原来button没加type属性, 造成原本已经将提交请求在button.click中实现了,在不加“return false;”的情况下,意外又另外提交了submit form的请求 (原因就是所用的Chrome在button的type属性不指明的情况默认为submit)
https://www.w3schools.com/tags/att_button_type.asp 中有说明:Tip: Always specify the type attribute for the <button> element. Different browsers may use different default types for the <button> element.

 二、以Ajax提交异步请求导出csv文件

1.  前端通过Ajax异步Post生成下载文件内容的请求【$.post("url",{objectdata},callbackfunc】(如果此处以非异步比如$.ajax请求的async为false,则会造成等待响应时页面卡死),后端生成内容并响应后(以下为.Net WebApi实现的方法):

2. 前端$.post的回调中根据响应的文本内容创建Blob对象供下载生成文件:

 三、Submit Form提交请求导出csv文件

1. 后端实现以Submit Form提交过来的下载文件提求,只需简单将要导出成文件的内容生成MemoryStream并以File类型的ActionResult返回即可,前端浏览器收到响应即会下载文件到本地DownLoad文件夹(从Submit Form到浏览器接收到响应这过程也是异步的,不会造成页面卡死)  

js实现文件下载有很多种方式,可以再参考以下:

js实现文件下载有很多种方式,本文主要介绍7种。_js文件下载_小新报道啦的博客-CSDN博客

一、a标签下

二、form标签下载

三、window.open下载

四、iframe下载

五、location.href下载

六、ajax下载(Blob - 利用Blob对象生成Blob URL)

七、ajax下载(Data URL - base64编码后的url)

详细见: https://blog.csdn.net/ljy123w/article/details/123438648

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值