ajax异步下载文件

这次给大家带来ajax异步下载文件,ajax异步下载文件的注意事项有哪些,下面就是实战案例,一起来看一下。

摘要: ajax请求一个二进制流(文件),转换为Blob进行处理或者下载保存文件

需求

管理后台需要随时下载数据报表,数据要实时生成后转换为excel下载。

文件不大,页面放置“导出”按钮,点击按钮后弹出保存文件对话框保存

说明:第一种方法使用a标签直接可以满足大部分人需求,第二种方法纯粹是在说实现方法以及更好的操作体验,不需要(举一个需要第二种方法的例子:如果生成很慢就需要生成过程中禁用按钮,防止连续生成)用到的可以不用看

解决方案

方法一

请求文件的接口能改为GET则可以使用这种方法

 导出

登录后复制

或者变换一种方式,使用js动态创建a标签

function download() {  var a = document.createElement('a');  var url = 'https://www.php.cn/faq/download/?filename=aaa.txt';  var filename = 'data.xlsx';  a.href=url;  a.download = filename;  a.click() }

登录后复制

缺点

不能使用post方法

不能在启动下载时禁用按钮、下载完毕启用按钮

方法二

很多人都在说第一种方法可以满足, 错误方式

常规方法,使用jquery:

function download() {  var url = 'https://www.php.cn/faq/download/?filename=aaa.txt';  $.get(url, function (data) {    console.log(typeof(data))    blob = new Blob([data])    var a = document.createElement('a');    a.download = 'data.xlsx';    a.href=window.URL.createObjectURL(blob)    a.click()  })}

登录后复制

这种方式保存的文件是不能打开的,console.log(typeof(data))会看到是string类型,原因是jquery将返回的数据转换为了string,不支持blob类型。

正确方式

function download() {  var url = 'https://www.php.cn/faq/download/?filename=aaa.txt';  var xhr = new XMLHttpRequest();  xhr.open('GET', url, true);    // 也可以使用POST方式,根据接口  xhr.responseType = "blob";  // 返回类型blob  // 定义请求完成的处理函数,请求前也可以增加加载框/禁用下载按钮逻辑  xhr.onload = function () {    // 请求完成    if (this.status === 200) {      // 返回200      var blob = this.response;      var reader = new FileReader();      reader.readAsDataURL(blob);  // 转换为base64,可以直接放入a表情href      reader.onload = function (e) {        // 转换完成,创建一个a标签用于下载        var a = document.createElement('a');        a.download = 'data.xlsx';        a.href = e.target.result;        $("body").append(a);  // 修复firefox中无法触发click        a.click();        $(a).remove();      }    }  };  // 发送ajax请求  xhr.send()}

登录后复制

相信看了本文案例你已经掌握了方法,更多精彩请关注【创想鸟】其它相关文章!

推荐阅读:

Ajax实现安全性很高的登陆界面

使用Ajax进行Form表单提交步骤详解

以上就是ajax异步下载文件的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2768098.html

(0)
上一篇 2025年3月8日 11:55:58
下一篇 2025年3月6日 05:05:51

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • 怎么操作Ajax返回HTML标签样式

    这次给大家带来怎么操作Ajax返回HTML标签样式,操作Ajax返回HTML标签样式的注意事项有哪些,下面就是实战案例,一起来看一下。 先准备好要返回内容的容器 登录后复制 预定义一个样式,以便返回的内容能直接套用 比如,我们希望返回的表格…

    编程技术 2025年3月8日
    200
  • Ajax请求时显示进度

    这次给大家带来Ajax请求时显示进度,Ajax请求时显示进度的注意事项有哪些,下面就是实战案例,一起来看一下。 Ajax在Web应用中使用得越来越频繁。在进行Ajax调用过程中一般都具有这样的做法:显示一个GIF图片动画表明后台正在工作,同…

    2025年3月8日
    200
  • ajax可以处理服务器返回哪些数据类型?

    这次给大家带来ajax可以处理服务器返回哪些数据类型?,ajax处理服务器返回数据类型的注意事项有哪些,下面就是实战案例,一起来看一下。 1.Text/HTML格式 这种返回类型处理很简单,直接就当作字符串用就行了.为了方便使用,封装成如下…

    编程技术 2025年3月8日
    200
  • ajax加载超时提示怎样实现

    这次给大家带来ajax加载超时提示怎样实现,ajax加载超时提示实现的注意事项有哪些,下面就是实战案例,一起来看一下。 index.php 加载超时 function load(){ $(“#tips”).html(“加载中…”); $…

    编程技术 2025年3月8日
    200
  • Ajax用户认证与注册使用详解

    这次给大家带来Ajax用户认证与注册使用详解,Ajax用户认证与注册的注意事项有哪些,下面就是实战案例,一起来看一下。 Ajax 表单提交是一个功能强大的技术,提供一种发送 web 表单的方法,无需重载浏览器窗口。jQuery 库让您使用 …

    编程技术 2025年3月8日
    200
  • Ajax丢失刷新后数据怎么处理

    这次给大家带来Ajax丢失刷新后数据怎么处理,处理Ajax丢失刷新后数据的注意事项有哪些,下面就是实战案例,一起来看一下。 Ajax 简介: AJAX即“Asynchronous Javascript And XML”(异步JavaScri…

    编程技术 2025年3月8日
    200
  • jQuery+与ajax怎么实现局部刷新功能

    这次给大家带来jQuery+与ajax怎么实现局部刷新功能,jQuery+与ajax实现局部刷新功能的注意事项有哪些,下面就是实战案例,一起来看一下。 当某几个页面都有相同的头部、导航、底部的时候,点击导航链接可以在几个页面中切换,此时想要…

    编程技术 2025年3月8日
    200
  • ajax读取properties步骤详解

    这次给大家带来ajax读取properties步骤详解,ajax读取properties的注意事项有哪些,下面就是实战案例,一起来看一下。 properties资源文件的内容如下: hello=englishwwname=english z…

    编程技术 2025年3月8日
    200
  • AJAX请求队列使用详解

    这次给大家带来AJAX请求队列使用详解,使用AJAX请求队列的注意事项有哪些,下面就是实战案例,一起来看一下。 AJAX在使用的过程中会遇到一个问题,当用户短时间内执行了多个异步请求的时候,如果前一个请求没完成,将会被取消执行最新的一个请求…

    编程技术 2025年3月8日
    200
  • jQuery+json做出Ajax调用功能(附代码)

    这次给大家带来jQuery+json做出Ajax调用功能(附代码),jQuery+json做出Ajax调用功能的注意事项有哪些,下面就是实战案例,一起来看一下。 Userservlet.java代码: package com.iss.ser…

    编程技术 2025年3月8日
    200

发表回复

登录后才能评论